Perl:解析AJAX加载的内容

Perl:解析AJAX加载的内容,perl,Perl,这是一个关于Web2.0之后的PerlWebScraper的古老问题;他们根本无法解析动态加载的页面,因为他们需要某种JavaScript引擎来呈现页面。这个问题比简单地呈现JavaScript要复杂得多,因为Perl还必须能够管理和维护DOM 它似乎可以通过使用FireFox(或其他浏览器)来完成渲染。然而,V8已经变得如此流行(如Node.js所见),所以我很好奇是否有新的库使用它,或者是否有一个独立于浏览器的解决方案,我不知道 我通常会认为这是一个可关闭的问题,但是当Google和堆栈溢出

这是一个关于Web2.0之后的PerlWebScraper的古老问题;他们根本无法解析动态加载的页面,因为他们需要某种JavaScript引擎来呈现页面。这个问题比简单地呈现JavaScript要复杂得多,因为Perl还必须能够管理和维护DOM

它似乎可以通过使用FireFox(或其他浏览器)来完成渲染。然而,V8已经变得如此流行(如Node.js所见),所以我很好奇是否有新的库使用它,或者是否有一个独立于浏览器的解决方案,我不知道

我通常会认为这是一个可关闭的问题,但是当Google和堆栈溢出时,结果不太多,不应该有太多的解决方案(如果有的话)。


相关(旧)问题:


您提到了Selenium,但有一个更高版本与Selenium 2.0集线器配合使用

我看到您也可以在没有Selenium集线器的情况下使用它 没有独立服务器(我没有使用此部件)

从v0.25开始,可以在没有独立模块的情况下使用该模块 服务器—也就是说,您不需要JRE或JDK来运行 硒测试。请参见Selenium::Chrome、Selenium::PhantomJS和 Selenium::Firefox了解详细信息。如果你想要更多的浏览器 除此之外,请在Github向我们大声喊叫

可能会感兴趣,因为它是一个无头浏览器


这可能不是一个答案,但对于一个评论来说太长了

我有点困惑……你所说的“独立于浏览器的解决方案”是什么意思?如果你正在抓取一个网页,根据你用来呈现它的浏览器,网页必然会有所不同,无论是Firefox还是PhantomJS这样的无头浏览器。你是说你想要一个不需要安装Firefox的解决方案吗?@ThisSuitesBlack不是的;从技术上讲,Mechanize是一种浏览器。我想得到的是能够呈现JS操作的结果,而不需要使用第三方浏览器或安装另一个浏览器二进制文件?也许可以试试,虽然那不是一个浏览器;我想你必须把它和你自己的机械化结合起来。我能找到的所有其他东西都需要一个外部二进制文件:例如,WWW::Mechanize::PhantomJS需要您安装PhantomJS,也不是浏览器,要求您安装V8。@ThisSuitesBlack不是是。这是几年前不存在的,但希望现在可以,特别是因为现在新的解决方案更加紧迫。SO的观众可能知道不太流行的模块,在本例中是一个PP版本。我不介意JavaScript::V8,除非我认为它没有集成到Mechanize中。把两者分开比较容易。将mechanize与firefox/phantom一起使用就像使用了太多中间件一样。没有使用过它们,但您可能想查看一下,这可能会很有趣。还有一个Mechanize插件:不过,似乎使用Firefox作为headless也可以实现同样的功能。我想我真的无法避免使用第三方渲染器,Mechanize似乎没有任何更原生的东西(希望有一个WWW::Mechanize::V8)@vol7ron FWIW,我认为WWW::Mechanize::PhantomJS没有WWW::Mechanize::Firefox那么受支持。我在将近一年前提交了一份关于渲染问题的报告,但没有任何回应。对于那个特定的项目,我最终只使用了PhantomJS而不是Perl,尽管我想我也可以使用我的模块补丁版本。我同意,一个纯Perl Javascript浏览器会很好。