【问题标题】:Scraping dynamic forms WWW::Mechanize Perl抓取动态表单 WWW::Mechanize Perl
【发布时间】:2014-09-29 16:10:25
【问题描述】:

我正在尝试使用 WWW::Mechanize 模块从页面中抓取表单及其字段。

由于网页的主体是使用 document.write JS 调用创建的,因此该模块中的表单方法找不到我要查找的表单,并且对 content 方法的调用会返回页面源。我需要从 document.write 调用访问生成的 HTML。

这是否可以使用 mechanize 模块?如果可以,我将如何去做?如果没有,是否有其他 Perl 模块可以帮助我?谢谢!

【问题讨论】:

  • WWW::Mechanize::Firefox 支持 JavaScript。
  • 这很酷,但是这个脚本需要在没有安装 Mozrepl 插件的必备 Firefox 的 Linux 机器上运行。
  • 然后安装呢?如果你无法安装任何东西,这个任务基本上是不可能的。
  • 这基本上就是我正在寻找的答案。谢谢!
  • 另请参阅 WWW::Mechanize::Firefox 常见问题解答中的 Do I Need An X Session To Run Firefox?

标签: javascript perl www-mechanize


【解决方案1】:

我知道您支持 Perl 解决方案,但您可能会考虑使用 Ruby。 我已经在 Perl 和 Ruby 中完成了多个网络抓取脚本。 我发现 Ruby 比 Perl 做得更好。

由于您在 Linux 上运行,Ruby 应该已经安装或者应该是一个简单的安装(假设您被允许在服务器上进行安装)。

您可以将这三个红宝石宝石用于自动化:

require 'watir-webdriver'
require 'selenium-webdriver'
require 'headless'

这些在网络抓取方面做得非常好。

【讨论】:

  • 我绝对愿意尝试不同的解决方案。 Perl 恰好是我的起点。我会试试这个。谢谢!
  • 为了使用无头 gem,您需要在您的 linux 服务器上安装 Xvfb 可执行文件才能拥有无头 X 服务器。不需要图形卡即可运行且实际上不显示任何图形的 X 服务器。 selenium-webdriver gem 将要求您在 linux 服务器上安装 selenium。你仍然需要在你的 linux 服务器上安装一个浏览器。所以看起来 Ruby 解决方案比 Perl 解决方案需要您安装更多的 linux 软件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 2011-10-25
相关资源
最近更新 更多