为什么Beautiful Soup无法从网站中提取所有“ a”标签

时间:2018-08-21 15:02:43

标签: python beautifulsoup

我正在学习BeautifulSoup,并且尝试从网站中提取所有“ a”标签。我收到很多“ a”标签,但很少有人忽略它们,我很困惑为什么会发生任何帮助,对此表示高度赞赏。
我使用的链接是:https://www.w3schools.com/python/
img:https://ibb.co/mmEKTK 图像中的红色框是bs4完全忽略的部分。它确实包含“ a”标签。

代码:

import requests
import bs4
import re
import html5lib

res = requests.get('https://www.w3schools.com/python/')
soup = bs4.BeautifulSoup(res.text,'html5lib')
try:
    links_with_text = []
    for a in soup.find_all('a', href=True):
        print(a['href'])
except:
    print ('none')

抱歉,我是新来的代码缩进。

1 个答案:

答案 0 :(得分:1)

bs4所忽略的链接是动态呈现的,即HTML代码中不存在广告等,但是脚本已根据您的浏览器习惯对其进行了调用。请求包只会获取静态HTML内容,您需要模拟浏览器来获取动态内容。

硒可以与任何浏览器(例如Chrome,Firefox等)一起使用。如果要在服务器上获得相同的结果(不使用UI),请使用无头浏览器(例如Phatomjs)。