我正在学习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')
抱歉,我是新来的代码缩进。
答案 0 :(得分:1)
bs4所忽略的链接是动态呈现的,即HTML代码中不存在广告等,但是脚本已根据您的浏览器习惯对其进行了调用。请求包只会获取静态HTML内容,您需要模拟浏览器来获取动态内容。
硒可以与任何浏览器(例如Chrome,Firefox等)一起使用。如果要在服务器上获得相同的结果(不使用UI),请使用无头浏览器(例如Phatomjs)。