【问题标题】:Automatic Search Using WWW::Mechanize使用 WWW::Mechanize 进行自动搜索
【发布时间】:2015-03-25 05:16:29
【问题描述】:

我正在尝试编写一个 Perl 脚本,它会自动在 this LexisNexis search page 上键入搜索变量并检索搜索结果。

我正在使用WWW::Mechanize 模块,但我不确定如何找出搜索栏本身的字段名称。这是我到目前为止的脚本 ->

#!/usr/bin/perl
use strict;
use warnings;
use WWW::Mechanize;
my $m = WWW::Mechanize->new();

my $url = "http://www.lexisnexis.com/hottopics/lnacademic/?verb=sr&csi=379740";
$m->get($url);

$m->form_name('f');
$m->field('q', 'Test');
my $response = $m->submit();
print $response->content();

但是,我认为本网站搜索框的“名称”不是“q”。我收到以下错误 - “无法在 site/lib/WWW/Mechanize.pm 第 1442 行的未定义值上调用方法“值”。”任何帮助深表感谢。谢谢!

【问题讨论】:

  • 仅供参考,该网站的 Terms of Service 说,“严禁通过机械、程序化、机器人、脚本或任何其他自动化方式使用在线服务。除非另有约定LN 以书面形式,仅允许通过手动执行的、离散的、单独的搜索和检索活动使用在线服务。”
  • 这是一个学术研究项目,我们已经获得了进行这种自动化的必要权限。谢谢。
  • 很高兴知道。大多数尝试抓取网站的人甚至都懒得阅读 TOS。
  • @Amritha 有几个,比如WWW::Mechanize::FirefoxWWW::Mechanize::PhantomJS
  • @Amritha:您的 JavaScript 问题是关于 Mech 的第 1 个问题。您可以在此处查看常见问题解答,了解处理 JavaScript 的其他模块的列表。 search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize/FAQ.pod

标签: perl file search-engine webpage www-mechanize


【解决方案1】:

如果您在浏览器中禁用 JavaScript,那么您会注意到搜索表单未加载,这意味着它正在由 JavaScript 加载,这就是您无法使用 WWW::Mechanize 处理它的原因。看看WWW::Mechanize::Firefox,这可能会帮助您完成任务。查看example scriptscookbookFAQs

您也可以使用 Selenium 执行相同的操作,请参阅 Gabor's tutorial on Selenium

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 2013-10-05
  • 2012-08-10
  • 2011-07-17
  • 2015-04-10
  • 2012-06-03
  • 1970-01-01
相关资源
最近更新 更多