以编程方式进行谷歌搜索并处理结果

时间:2015-05-16 09:48:58

标签: php node.js google-search google-image-search

我想在google上进行搜索,使用php或node.js ...我还没有决定,这取决于这个问题的答案更容易实现(我想做的其余部分很容易在两种语言中)。

进行此咨询后,我想处理结果,获取链接,结果数量(只有结果数量可能很大)...

搜索是一个网址图片。

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

Google已实施了许多安全措施,以确保无法抓取其搜索引擎。但是,Google必须仍然有效,这就是重点。所以到目前为止我发现google抓取的最好方法是控制真正的网络浏览器。

如果你想走这条路,那就是Selenium。但是,我更喜欢我的程序是自包含的,而不是需要依赖已安装的Web浏览器(我在无头服务器上运行我的大部分程序)。所以我更喜欢使用phantomjs这是一个完整的基于webkit的浏览器(如Safari和Konqueror)驱动的javascript。

Phantomjs脚本往往是冗长的,但是大多数人都使用它包装,如casperjs,node-horseman或nightmarejs(还有很多,搜索npm)。

以下是来自node-horseman网页的Google抓取示例:

var Horseman = require('node-horseman');
var horseman = new Horseman();

var numLinks = horseman
  .open('http://www.google.com')
  .type('input[name="q"]', 'github')
  .click("button:contains('Google Search')")
  .waitForNextPage()
  .count("li.g");

console.log("Number of links: " + numLinks);

horseman.close();

如果您知道如何使用开发人员工具检查页面,您将知道如何使用phantomjs编写一个刮刀。

一句警告。不要太频繁地下载谷歌搜索,否则谷歌可能会将您的脚本检测为机器人并暂时禁止您。确保在搜索之间等待适当的时间。

答案 1 :(得分:0)

您需要使用代理来避免被禁止。私有代理工作效果最好,你获得的速度越快,速度越快,线程数越少,10-50越少。如果你能买得起100+,那么你真的可以飞