我正在寻找一种从服务器端(使用javascript)抓取网站并在将数据分析到mysql数据库后保存输出的方法。我需要通过单击链接并从数据库提交数据来逐页导航,而不会过期。这可以使用 phpquery 网络浏览器插件吗?. 我已经开始使用 casperjs 执行此操作。我想知道这两种方法的优缺点。我是编码领域的初学者。请帮忙。
2 回答
我建议您使用PhantomJS
或CasperJS
使用 JavaScript 选择器解析 DOM,以获取您想要返回的页面部分。不要使用 phpQuery,因为它基于 PHP,并且与仅使用 JavaScript DOM 解析相比,在处理过程中需要一个单独的步骤。此外,您将无法使用 PHP 执行点击事件。任何客户端都需要在 PhantomJS 或 CasperJS 中运行。
如果这是您选择的服务器端语言,甚至可以仅使用 PHP 编写一个完整的抓取引擎。您需要对登录过程进行逆向工程,并使用您的 cURL 请求维护一个 cookie jar,以使您的登录对每个请求都有效。一旦您与该网站建立了会话,您就可以使用您想要抓取的一系列链接来设置您的导航路径。网络爬虫背后的想法是,您从某个链接加载页面并处理该页面,然后移动到下一个链接。您继续此过程,直到处理完所有页面,然后您的爬网完成。
我会查看 Google 的指南使 AJAX 应用程序可抓取您尝试废弃的网站可能已采用该方案(使其网站的内容可抓取)。
您要#!
在 URL 的哈希片段中查找,这向爬虫表明该站点支持 AJAX 爬虫方案。
简而言之,当您遇到这样的 URL 时。
www.example.com/ajax.html#!key=value
您将其修改为www.example.com/ajax.html?_escaped_fragment_=key=value
. 服务器应该响应该页面的 HTML 快照。
这是完整的规格