是否有一种程序化的方式来返回"关于N个结果"来自Google搜索的号码?

时间:2016-08-18 16:37:14

标签: google-search google-search-api

我希望能够抓住关于N结果的#34;"任意Google搜索字词的数字。谷歌对刮刀相当耐用,所以虽然这可能是一个有点工作的选择,但我特别询问是否有更好的方法可以做到这一点?也许有一个由Google提供的预先存在的API可以满足这种需求吗?

2 个答案:

答案 0 :(得分:1)

我不会尝试抓取,因为最有可能产生法律后果,但会使用Google Custom Search API。您需要API密钥和CX ID(这是您在Google帐户中设置的自定义搜索引擎的ID)

一旦您有权访问API和您的CX ID,就可以向cse.list方法提交查询,并在totalResults下的回复中获取您要查找的号码。

设置和自定义自定义搜索引擎时,您必须定义要搜索的网站。幸运的是,您可以添加* .com,* .net等通配符。或者按照此页面上的说明搜索整个网络:https://support.google.com/customsearch/answer/2631040?hl=en

我已经包含了您需要在下面进行此操作所需的所有链接。拥有CX ID后,请尝试使用API​​列表资源管理器。它会为您提供实时响应数据,您可以查看并使用它。

Google自定义搜索API

https://developers.google.com/custom-search/

这是您想要使用的方法/终点:

https://developers.google.com/custom-search/json-api/v1/reference/cse/list

cse.list方法资源管理器:

https://developers.google.com/apis-explorer/#p/customsearch/v1/search.cse.list

设置和管理您的自定义搜索引擎

https://cse.google.com/cse/manage/all

注意:根据您配置搜索引擎的方式,结果可能会略有不同。我有一个测试设置来搜索整个网络,重点是* .com和* .net域名,我得到的数字比Google在"关于N结果"中显示的数字更大。我不确定你是否需要那个确切的数字,但他们将其描述为"关于"所以它无论如何都不能完全准确。关键是,通过CSE,您可以对如何配置它进行很多控制,并且您应该能够非常接近。

答案 1 :(得分:0)

假设您的自定义搜索API,您是否尝试从JSON响应正文中有条件地删除属性totalResults

你可以通过检查查询参数(比方说q)来实现这一点,

if(q.equals("your string")){
    var keyName = "totalResults";
    var resp = json_encode($response);
    delete resp.queries.<APIkey>[keyName];     
} 

注意:找到keyName的结构:totalResults来自here