【发布时间】:2019-04-10 03:54:19
【问题描述】:
我正在编写一个网络爬虫来提取谷歌搜索中搜索结果的数量,该搜索结果显示在搜索结果页面的左上角。我已经写了下面的代码,但我不明白为什么phrase_extract 是None。我想提取短语“大约 12,010,000,000 个结果”。我在哪个部分犯了错误?可能解析 HTML 不正确?
import requests
from bs4 import BeautifulSoup
def pyGoogleSearch(word):
address='http://www.google.com/#q='
newword=address+word
#webbrowser.open(newword)
page=requests.get(newword)
soup = BeautifulSoup(page.content, 'html.parser')
phrase_extract=soup.find(id="resultStats")
print(phrase_extract)
pyGoogleSearch('world')
【问题讨论】:
-
您应该考虑使用他们的API,而不是抓取
-
超过一定数量就不是免费的了。但是你知道为什么API的结果与这种方法不同吗?
-
API 是一种比抓取更有前途的方法。网站所有者不会等待通知您有关更改的信息,因此您的代码可能会在某个时间变得无法正常工作。但是,API 开发和维护良好,与抓取相比,响应时间要快得多。
-
@Gahan 所以这就是为什么当我用漂亮的汤刮刮时,与在 google 和 alos api 中搜索相比,我得到不同的结果?这意味着我通过这三种不同的方法得到了三种不同的结果
-
当然可以,因为您使用 id 或标签类别抓取数据,它们可能会更改它或嵌套在另一个标签中。它只是html结构。而您有 API 文档。
标签: python web-scraping beautifulsoup