【问题标题】:Can I scrape all URL results using Python from a google search without getting blocked?我可以使用 Python 从谷歌搜索中抓取所有 URL 结果而不会被阻止吗?
【发布时间】:2017-12-20 21:35:58
【问题描述】:

我意识到有人问过这个问题的不同版本,前几天我花了几个小时尝试了多种策略。

我想要的是使用 python 从谷歌搜索中抓取所有 URL,我可以在单独的脚本中使用这些 URL 来对大型语料库(主要是新闻网站)进行文本分析。这似乎相对简单,但我尝试过的尝试都没有正常工作。

这是我得到的最接近的:

from google import search

for url in search('site:cbc.ca "kinder morgan" and "trans mountain" and protest*', stop=100):
    print(url)

这在我被踢之前返回了大约 300 个 URL。使用这些参数进行实际搜索会提供大约 1000 个结果,我想要所有结果。

首先:这可能吗?第二:有人有什么建议吗?我基本上只想要一个包含可以在另一个脚本中使用的所有 URL 的 txt 文件。

【问题讨论】:

  • 使用代理避免被阻止。

标签: python python-3.x web-scraping


【解决方案1】:

这个包似乎使用屏幕抓取来从谷歌检索搜索结果,所以它不符合谷歌的服务条款,这可能是你被阻止的原因。

Google's Terms of Service中的相关子句:

不要滥用我们的服务。例如,不要干扰我们的服务或尝试使用我们提供的界面和说明以外的方法访问它们。您只能在法律允许的情况下使用我们的服务,包括适用的出口和再出口管制法律和法规。如果您不遵守我们的条款或政策,或者我们正在调查可疑的不当行为,我们可能会暂停或停止向您提供服务。

我无法找到一个确定的数字,但他们对每天搜索查询数量的限制似乎也相当严格 - 在他们的 JSON 自定义搜索 API 文档here 上为每天 100 个搜索查询.

尽管如此,尝试其他替代方法看看它们是否更好用也没有什么坏处:

  1. BeautifulSoup
  2. Scrapy
  3. ParseHub - 这个不在代码中,但它是一个有用的软件,有很好的文档。链接到他们在how to scrape a list of URLs 上的教程。

【讨论】:

    猜你喜欢
    • 2023-02-11
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    相关资源
    最近更新 更多