首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网络爬虫:使用Perl的MozRepl模块处理Javascript

网络爬虫:使用Perl的MozRepl模块处理Javascript
EN

Stack Overflow用户
提问于 2011-10-14 09:18:57
回答 1查看 1.4K关注 0票数 4

我试图通过使用网络爬虫来保存几个网页。通常,我更喜欢使用perl的WWW::Mechanize模块。然而,据我所知,我想爬的站点上有很多javascripts,似乎很难避免。因此,我研究了以下perl模块

  • WWW::机械化::Firefox
  • MozRepl
  • MozRepl::RemoteObject

火狐MozRepl扩展本身工作得很好。我可以使用终端导航网站,就像开发者教程中显示的那样--理论上。但是,我对javascript一无所知,因此很难正确地使用模块。

下面是我喜欢从以下来源开始的:摩根士丹利

对于几家在“公司”之下的上市公司--截至2011年10月14日--我喜欢保存它们各自的页面。例如,单击第一家上市公司(即'1-800-Flowers.com,Inc'),将使用两个参数-> dtxt('FLWS.O','2011-10-14')调用javascript函数,从而生成所需的新页面。我现在喜欢在本地保存的页面。

在perl的MozRepl模块中,我想到了如下所示:

代码语言:javascript
复制
use strict;
use warnings;
use MozRepl;

my $repl = MozRepl->new;
$repl->setup; 
$repl->execute('window.open("http://www.morganstanley.com/eqr/disclosures/webapp/coverage")');

$repl->repl_enter({ source => "content" });
$repl->execute('dtxt("FLWS.O", "2011-10-14")');

现在我喜欢保存生成的HTML页面。

因此,我想要生成的代码应该访问一些公司的HTML站点,只需保存网页即可。(例如,有三家公司: MMM.N、FLWS.O、SSRX.O)

  1. 我不能绕过页面的javascript函数,因此不能使用WWW::Mechanize,这是正确的吗
  2. 在问题1之后,所提到的perl模块是一个可行的方法吗?
  3. 最后,如果你说前两个问题可以用“是”来回答,如果你能帮我完成实际的编码,那就太好了。在上面的代码中,缺少的基本部分是一个'save'-command。(也许使用火狐的saveDocument功能?)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-14 12:31:06

web通过HTTP请求和响应工作。

如果您能够发现要发送的适当请求,那么您将得到正确的响应。

如果目标站点使用JS来形成请求,那么您可以执行JS,或者分析它所做的事情,这样您就可以使用您正在使用的语言进行同样的操作。

一种更简单的方法是使用一个工具来捕获结果请求,无论该请求是否由JS创建,然后您就可以手工编写您的刮取代码来创建您想要的请求。

AT&T中的"Web抓取代理“就是这样一个工具。

您设置它,然后导航到您想要抓取的网页网站,WSP将记录所有的请求和响应为您。

它以Perl代码的形式记录它们,然后您可以修改这些代码以满足您的需要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7765537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档