【问题标题】:How do I crawl a site with dynamic forms using WWW::Mechanize?如何使用 WWW::Mechanize 抓取具有动态表单的站点?
【发布时间】:2011-04-07 10:33:42
【问题描述】:

我喜欢通过使用 Perl 编写 Web 爬虫,从使用一些 Javascript 并且 URL 以 .aspx 结尾的网站检索和存储 HTML 表的值。

Web site 提供了一些关于选举结果的数据。

您有一个搜索表单,其中包含两个选项作为下拉菜单,Province provlist 和 City/Municipality munlist

  • 您选择省份。网页会重新加载到相同的 URL,并更改第二个下拉菜单的可用选项列表,即城市/市政。
  • 现在您可以选择您的城市/市镇,点击“搜索”按钮后,HTML 表格将显示结果。

我喜欢检索所有这些表格及其结果。

我喜欢用 Perl 来做,但是到目前为止我只写了非常小/简单的脚本。如果您有一些关于我应该如何开始这项任务的一般信息,那将非常有帮助。

  1. 我以前使用过一些WWW::Mechanize 函数,但只有少数。我可以使用WWW::Mechanize 函数完成这项工作吗,这些函数是否足够?还是我需要额外的包?
  2. WWW::Mechanize 的常见问题解答指出它在 Javascript 方面存在一些问题。但是,在我阅读的另一篇文章中,可能可以避免使用此 Javascript。为下拉菜单之一调用的 Javascript 函数是否会导致问题?

    <select name="provlist" onchange="javascript:setTimeout('__doPostBack(\'provlist\',\'\')', 0)" id="provlist" tabindex="1">
    
  3. ASPX 框架有多麻烦?

正如我之前所说,我只有一点编写 Perl 爬虫的经验,所以任何信息/提示/等。非常感谢您提供。

【问题讨论】:

    标签: javascript asp.net perl web-crawler


    【解决方案1】:
    1. 够了。
    2. 如果没有 Javascript,表单会正常降级。使用不同的provlist 项目提交一次表单,例如AGUSAN DEL NORTE,并且响应页面将有相应的munlistBUENAVISTA等),并且表单将设置为列表的第一项,并且表格将包含第一项的数据。

    【讨论】:

    • 我在弄清楚如何使用 forms() 函数的顺序时遇到了一些麻烦,但现在它完美无缺!谢谢!
    【解决方案2】:

    WWW::Mechanize 的常见问题解答指出它在 Javascript 方面存在一些问题。但是,在我阅读的另一篇文章中,可能可以避免使用此 Javascript。为下拉菜单之一调用的 Javascript 函数是否会导致问题?

    如果你想机械化JS重页,你可能想看看WWW::Mechanize::Firefox

    【讨论】:

      猜你喜欢
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 2013-01-14
      • 2014-05-07
      相关资源
      最近更新 更多