【发布时间】:2019-08-15 00:06:05
【问题描述】:
我正在尝试学习如何使用 BS4,但遇到了这个问题。我尝试在 Google 搜索结果页面中查找显示搜索结果数量的文本,但在 html_page 和 soup HTML 解析器中都找不到文本“结果”。这是代码:
from bs4 import BeautifulSoup
import requests
url = 'https://www.google.com/search?q=stack'
res = requests.get(url)
html_page = res.content
soup = BeautifulSoup(html_page, 'html.parser')
print(b'results' in html_page)
print('results' in soup)
两个打印都返回False,我做错了什么?如何解决?
编辑:
原来网页的语言有问题,在 URL 中添加&hl=en 几乎解决了它。
url = 'https://www.google.com/search?q=stack&hl=en'
第一个打印现在是True,但第二个仍然是False。
【问题讨论】:
-
第一个对我有用(第二行通常打印
False)。你试过printinghtml_page吗?那会告诉你的。您可能正在接受验证码。 -
Google 并不是学习解析 HTML 的好例子。他们过度使用 AJAX 来构建页面,并且有几种反抓取方法。
-
@Selcuk 是的,我尝试打印页面,它看起来像 HTML 代码
-
祝你好运。请注意,他们会更改页面,有时甚至一天会更改多次,以使其尽可能难。他们希望你使用他们的 API(并投入一些硬币)。
-
@GustavoMaia 它总是看起来像 HTML代码。问题是它是否是预期的 HTML 代码。
标签: python beautifulsoup python-requests