首页 > 解决方案 > 网络爬虫无法从谷歌搜索中检索结果

问题描述

我正在创建一个简单的网络爬虫,我希望它能够抓取谷歌搜索查询的结果网页,例如“唐纳德特朗普”。我写了以下代码:

# import requests
from urllib.request import urlopen as uReq
import urllib.request
from bs4 import BeautifulSoup as soup

paging_url = "https://www.google.gr/search? 
ei=fvtMW8KMI4vdwQLS67yICA&q=donald+trump&oq=donald+trump&gs_l=psy- ab.3..35i39k1j0i131k1j0i203k1j0j0i203k1j0l3j0i203k1l2.4578.6491.0.6763.12.9.0.0.0.0.447.879.4-2.2.0....0...1c.1.64.psy-ab..10.2.878....0.aB3Y8R5B0U8"

req = urllib.request.Request("https://www.google.gr/search?ei=fvtMW8KMI4vdwQLS67yICA&q=donald+trump&oq=donald+trump&gs_l=psy-ab.3..35i39k1j0i131k1j0i203k1j0j0i203k1j0l3j0i203k1l2.4578.6491.0.6763.12.9.0.0.0.0.447.879.4-2.2.0....0...1c.1.64.psy-ab..10.2.878....0.aB3Y8R5B0U8", headers={'User-Agent': "Magic Browser"})

UClient = uReq(req)  # downloading the url
page_html = UClient.read()
UClient.close()

page_soup = soup(page_html, "html.parser")
results = page_soup.findAll("div", {"class": "srg"})
print(len(results))

稍微解释一下我的想法以及我对谷歌页面结构的注意事项:

我试图只获得搜索结果,而不是谷歌也显示的推荐视频或图像。当推荐的视频或图像出现时,九个结果存在于两个带有“srg”类的“div”标签下。在这些“div”标签之间插入另一个带有推荐视频/图像的“div”标签。

我的问题是我的代码无法“看到”属于“srg”类的“div”标签。我不知道为什么 BeautifulSoup 会忽略它们。属于“rc”类的“div”标签也会发生同样的事情。任何人对为什么会发生这种情况有任何想法?

标签: python-3.xbeautifulsoupweb-crawler

解决方案


我在使用 PhantomJS 制作 Webcrawler 来提取 Google 搜索数据时遇到了一些问题。有时我可以浏览几页,然后系统就会丢失。在某些情况下,我会在生成的代码中看到我正在执行非法操作,并且我应该使用付费 API“自定义搜索 JSON API ”。我找到的解决方案是从 Yahoo 网站创建爬虫。如果结果对我来说是令人满意的。

Google API 让您每天可以进行 100 次免费搜索。根据您的应用目的,这可能是一个更安静的解决方案。


推荐阅读