刮一个有javascript的网站

时间:2013-09-23 11:05:40

标签: javascript jquery phantomjs casperjs phpquery

我正在寻找一种从服务器端(使用javascript)抓取网站的方法,并在将数据分析到mysql数据库后保存输出。我需要通过单击链接并从数据库提交数据在页面之间导航,而不会话会话到期。这可能使用phpquery网页浏览器插件吗? 。我已经开始使用casperjs这样做了。我想知道这两种方法的优缺点。我是编码领域的初学者。请帮忙。

2 个答案:

答案 0 :(得分:2)

我建议您使用PhantomJSCasperJS并使用JavaScript选择器解析DOM以获取您想要的页面部分。不要使用phpQuery,因为它基于PHP,并且在处理过程中需要单独的步骤而不是仅使用JavaScript DOM解析。此外,您将无法使用PHP执行单击事件。任何客户端都需要在PhantomJS或CasperJS中运行。

如果这是您选择的服务器端语言,甚至可以使用PHP编写完整的抓取引擎。您需要对登录过程进行反向工程,并使用您的cURL请求维护一个cookie jar,以使您的登录对每个请求都有效。在与网站建立会话后,您可以使用要爬网的一系列链接设置导航路径。 Web爬网背后的想法是,您从某个链接加载页面并处理页面,然后转到下一个链接。您继续此过程,直到所有页面都已处理完毕,然后您的抓取完成。

答案 1 :(得分:0)

我会查看Google的指南Making AJAX Applications Crawlable您尝试废弃的网站可能已采用该方案(使其网站的内容可抓取)。

您希望在URL的哈希片段中查找#!,这向爬网程序指示该站点支持AJAX爬网方案。

简而言之,当您遇到这样的网址时。 www.example.com/ajax.html#!key=value您可以将其修改为www.example.com/ajax.html?_escaped_fragment_=key=value。服务器应该使用该页面的HTML快照进行响应。

以下是Full Specification