【问题标题】:How to crawl website that uses Direct Web Remoting (DWR) to return Javascript that manipulates page's HTML如何抓取使用 Direct Web Remoting (DWR) 的网站以返回操纵页面 HTML 的 Javascript
【发布时间】:2015-02-14 00:19:05
【问题描述】:

我在抓取似乎是使用 DWR 动态生成其所有内容的特定网站时遇到问题。页面源将少量 HTML 显示为“外壳”,其中不包含我想要抓取的链接。相反,我看到 POST 请求的响应仅包含 Javascript:

throw 'allowScriptTagRemoting is false.';
//#DWR-INSERT
//#DWR-REPLY
var a1 = {}; var a2 = {}; var a3 = {}; // ... etc.
a1.configs=a3;a1.defaultSite=true;a1.defaultValues=a4; // ... etc.

还有一堆东西,总共大约 150 行。

我知道这就是 DWR 的工作原理,但我想知道网络爬虫通常是如何解决这个问题的。有没有办法让它从 AJAX 的响应中执行 javascript,然后等待 HTML 完成编辑?

我觉得这与传统的 Ajax 请求不同,因为它们可能会返回 HTML,并且一旦 Ajax 请求完成,DOM 就会更新。或者,它们返回一些数据,页面的其余部分 Javascript 更新 DOM。但是,无论哪种情况,都无需在之后执行响应。

任何见解都将不胜感激。

【问题讨论】:

    标签: javascript ajax web-crawler dwr


    【解决方案1】:

    不确定您尝试在哪个平台上抓取网站,但您可以尝试使用 PhantomJS 运行 JavaScript 并呈现网站。如果您尝试使用 AJAX 从另一个站点对其进行爬网,您可以向您自己的服务器发送请求,该服务器在后端运行 PhantomJS 并将渲染的内容显示为输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 2011-12-24
      相关资源
      最近更新 更多