【发布时间】:2020-01-09 22:53:12
【问题描述】:
我正在尝试使用 BeautifulSoup 提取其中的锚标记(截图附在下面),但是在只有锚标记工作时得到空列表。
我阅读了 BeautifulSoup 文档并尝试了 select() 方法和 find_all() 方法,但仍然给出了空列表。
>>> import requests, webbrowser, bs4
>>> res = requests.get('https://www.google.com/search?q=beautiful+soup')
>>> soup = bs4.BeautifulSoup(res.text, 'html.parser')
>>> elems = soup.select('.r a')
>>> len(elems)
0
>>> elems = soup.select('a')
>>> len(elems)
68
>>> elems = soup.select('.r')
>>> len(elems)
0
>>> soup.find_all('a', class_='r')
[]
>>> soup.select('[class~=r]')
[]
>>> soup.find_all('a', class_='r')
[]
>>> soup.find_all('a', _class='r')
[]
>>> soup.find_all('a', {'class_':'r'})
[]
>>> soup.find_all('a', {'_class':'r'})
[]
【问题讨论】:
-
这个问题已经被问过很多次了。您是否在 SO 上尝试过一些以前的解决方案?
-
为什么在课前使用_?你试过了吗:soup.find_all('a', {'class':'r'}) ?
-
@ASTEFANI 在课前使用 _,正如我在一个答案中读到的,在课堂前使用 _,问题得到解决。但是这个文档link 说在课后使用 _ 。正如您所建议的,仅使用过的类仍然列表为空。正如 Dev Khadka 下面所说,看起来 Google 阻止了报废。我在其他网站上进行了测试并且工作正常。
-
@QHarr 是的,检查了答案,但仍然是同样的问题。但这里的问题似乎是谷歌阻止了报废。我的代码与其他网站一起使用。