我想在google上进行搜索,使用php或node.js ...我还没有决定,这取决于这个问题的答案更容易实现(我想做的其余部分很容易在两种语言中)。
进行此咨询后,我想处理结果,获取链接,结果数量(只有结果数量可能很大)...
搜索是一个网址图片。
有什么建议吗?
答案 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+,那么你真的可以飞