use*_*504 7 search-engine url-parameters
我一直在编写一个从网络搜索中提取数据的程序.为了获得更多数据,我希望通过脚本为每个查询提取更多结果(比方说100左右).
我的问题是,有没有办法修改Google,Yahoo或Bing的URL(按此顺序排列),这样每个查询可以获得10个以上的结果?
对于谷歌来说,追加&num=99曾经在某一点上工作但不再有效:(我看到了类似的追加,&count=50但在任何一个搜索引擎上也没有用.
num=99对Google无效的原因是因为num未使用参数的实际值,而是将其与允许值列表进行比较.
允许的值为10,20,30,40,50和100.该字段的任何其他值都将被忽略.
对于Bing,参数是count=####可以是1-100的任何值.
对于Yahoo,参数是n=####可以是1-100的任何值.
在大多数情况下,仅当用户未指定要在搜索引擎的搜索设置中显示的搜索结果数量时,URL参数才有效.否则,该cookie将优先.
我不知道您使用的是什么编程语言,但总体思路是使用正确的 cookie 设置加载 google 搜索页面(这就是在撰写本文时它们的存储方式)。
您可以在 Google Chrome 中设置并查看 cookie。为了避免不必要的 Cookie,请首先打开一个新的隐身窗口 ( Ctrl++ Shift) N,然后导航到搜索设置 ( https://www.google.com/preferences )。
在撰写本文时,您需要选中“从不显示即时结果”,然后将“每页结果”的滑块调整为您想要的任何值。点击底部的“保存”后,您现在可以通过打开开发人员控制台 ( Ctrl++ Shift)J并导航到资源选项卡来查看 cookie。
同样,在撰写本文时,Google 设置了两个变量NID和PREF。PREF是我们感兴趣的改变搜索结果的方法。其外观示例:
ID=8155cce71859f7d0:U=fe6e69e174148b7b:FF=0:LD=en:NR=40:TM=1379366492:LM=1379366586:SG=2:S=FoybwBhek8noyp0t
Run Code Online (Sandbox Code Playgroud)
(此键可获取 40 个结果,如 所示NR=40)
有了这个键(PREF)和它的值(如上所示),您可以在通过wget、curl等请求页面时发送 cookie。在我最近与此相关的项目中,我将Node与requests 库一起使用。
以下是关于如何获取包含 40 个结果的 Google 页面的片段(来自请求文档的修改示例):
ID=8155cce71859f7d0:U=fe6e69e174148b7b:FF=0:LD=en:NR=40:TM=1379366492:LM=1379366586:SG=2:S=FoybwBhek8noyp0t
Run Code Online (Sandbox Code Playgroud)
或者查看 wget/curl 的手册页。我知道 wget 指定了一个--load-cookies您可以使用的标志。
您可以将此应用到您需要从中获取内容的任何其他基于 Cookie 的网站。雅虎!使用基于 cookie 的设置 - 我不确定 Bing 使用什么。