Python-获取Google搜索结果

2024-04-25 17:00:33 发布

您现在位置:Python中文网/ 问答频道 /正文


我的目标是创建一个小型的sript,它可以在“raw”中找到google搜索的所有结果 我的英语说得不太好,所以我想举个例子告诉你我想要什么:
I类型:大象
脚本返回
www.elephant.com
www.bluelephant.com
www.ebay.com/elephant
……

我在考虑urllib.request,但是返回值对它不可用! 我找到了一些教程,但完全不适应我的愿望! 就像我告诉你的,我的目标是有一个.txt文件作为输出,其中包含与我的查询匹配的所有网站!
谢谢大家


Tags: 脚本com类型目标rawrequestwwwgoogle
3条回答

一个简单的方法是请求google搜索,然后解析html结果。您可以使用一些Python库,例如usbeautifuldsoup,来轻松解析html内容,最后获得所需的url链接。

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

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

service = build('customsearch','v1',developerKey= my_api_key)

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

首先,您需要创建一个Google自定义搜索,方法是访问他们的站点或按照这里提供的说明https://developers.google.com/custom-search/docs/tutorial/creatingcse

这将为您提供

  • 自定义搜索引擎ID
  • API密钥

使用服务所需的凭据。

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

from googleapiclient.discovery import build

这将使您能够创建生成对象:

service = build("customsearch", developerKey=my_api_key)

根据文档,这构建了一个与API交互的资源。

如果要返回搜索结果,请在servicecse().list()方法上调用execute()

res = service.cse().list(q=my_search_keyword, cx=my_cse_id, **kwargs).execute()

返回搜索结果列表,其中每个结果都是dictionary对象。第i个结果的URL可以通过“link”键访问:

ithresult = res[i]['link']

请注意,一次调用只能返回10个结果,因此请使用.list()中的start关键字参数,并考虑将此调用嵌入到循环中,以便一次生成多个链接。

你应该能够找到很多关于将搜索结果保存到文本文件的答案。

N.B.一开始还有一件事让我很困惑——大概你会想搜索整个网站,而不仅仅是一个网站。但是在创建CSE时,会要求您指定要搜索的单个站点或站点列表。别担心,只要输入任何旧的东西,你可以稍后删除它。甚至连谷歌也支持这一黑客攻击:

Convert a search engine to search the entire web: On the Custom Search home page, click the search engine you want. Click Setup, and then click the Basics tab. Select Search the entire web but emphasize included sites. In the Sites to search section, delete the site you entered during the initial setup process.

相关问题 更多 >