我在抓取特定网站时遇到问题,该网站似乎使用DWR动态生成所有内容。页面源显示少量HTML作为“shell”,其中不包含我想要抓取的链接。相反,我看到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。但在任何一种情况下,都不需要在之后执行响应。
任何见解都会受到好评。
答案 0 :(得分:0)
您不确定在哪个平台上尝试抓取网站,但您可以尝试使用PhantomJS来运行JavaScript并渲染网站。如果您尝试使用另一个站点的AJAX对其进行爬网,则可以向您自己的服务器发送请求,该服务器在后端运行PhantomJS并将呈现的内容显示为输出。