Python-获取Google搜索结果

Python-获取Google搜索结果,python,Python,我的目标是创建一个小型sript,它可以在“原始”中查找google搜索的所有结果。 我英语说得不太好,所以我想举个例子来说明我的想法: I类型:大象 脚本返回 www.elephant.com www.bluelephant.com www.ebay.com/elephant ..… 我考虑的是urllib.request,但是返回值将不适用于此! 我找到了一些教程,但根本不符合我的愿望! 就像我告诉过你的那样,我的目标是将一个.txt文件作为输出,其中包含与我的查询匹配的所有网站 谢谢大家一


我的目标是创建一个小型sript,它可以在“原始”中查找google搜索的所有结果。
我英语说得不太好,所以我想举个例子来说明我的想法:
I类型:大象
脚本返回
www.elephant.com
www.bluelephant.com
www.ebay.com/elephant
..…

我考虑的是urllib.request,但是返回值将不适用于此! 我找到了一些教程,但根本不符合我的愿望! 就像我告诉过你的那样,我的目标是将一个.txt文件作为输出,其中包含与我的查询匹配的所有网站

谢谢大家

一个简单的方法是向google search发出请求,然后解析html结果。您可以使用一些Python库(如us Beautiful Soup)轻松解析html内容,最终获得所需的url链接。

您有两种选择—使用API或像浏览器一样发出请求,然后解析html

  • 第一个选择是设置,并且是有限的-每天100个免费查询,然后1000个5美元

  • 第二种选择更简单,但它违反了谷歌的ToS


    • 这些似乎经常改变,所以希望这个答案在一段时间内仍然有用

      首先,您需要创建一个谷歌自定义搜索,通过访问他们的网站或按照这里提供的说明进行

      这将为您提供这两种服务

      • 自定义搜索引擎ID
      • API密钥
      使用服务所需的凭据

      在python脚本中,您需要导入以下包:

      from googleapiclient.discovery import build
      
      这将使您能够创建生成对象:

      service = build("customsearch", developerKey=my_api_key)
      
      根据文档,这构造了一个用于与API交互的资源

      如果要返回搜索结果,请在
      服务
      cse()上调用
      execute()
      。list()
      方法:

      res = service.cse().list(q=my_search_keyword, cx=my_cse_id, **kwargs).execute()
      
      返回搜索结果列表,其中每个结果都是字典对象。可以使用“link”键访问第i个结果的URL:

      注意,您只能在一次调用中返回10个结果,所以使用<代码>开始/代码>关键字参数在 List]()中,并考虑将此调用嵌入到一个循环中,以同时生成多个链接。 你应该能够找到大量关于将搜索结果保存到文本文件的答案

      注意:一开始还有一件事让我很困惑——大概你会想搜索整个网站,而不仅仅是一个网站。但是,在创建CSE时,您将被要求指定要搜索的单个站点或站点列表。别担心,只要输入任何旧的东西,你可以稍后删除它。就连谷歌也赞同这种做法:

      转换搜索引擎以搜索整个web:在自定义搜索上 在主页上,单击所需的搜索引擎。单击设置,然后单击 单击“基本”选项卡。选择搜索整个网站,但不强调 包括网站。在“要搜索的网站”部分中,删除要搜索的网站 在初始设置过程中输入

      我只是在“第九维度”的答案上加了两点

    • 用于查找您的自定义搜索引擎ID
    • 应该在代码的第二行做一个小的修改:如下所示,应该添加“version”作为参数

    • service=build('customsearch','v1',developerKey=my\u api\u key)

      好的,谢谢您的回答!我知道谷歌的ToS,有时谷歌试图通过使用catchpa来避免这种情况!非常感谢你的回答,我会努力的!!再次感谢。我把这个答案放在这里的主要原因是,当我这么做的时候,我需要从谷歌图片搜索中抓取图片。我无法通过解析Google图像搜索查询结果页面来获得图像URL(但我对网络或网络一无所知)。
      ithresult = res[i]['link']