使用Perl中的LWP :: UserAgent完成表单

时间:2015-02-02 21:39:52

标签: perl

我正在尝试使用periss of melissadata页面中的模块LWP::UserAgent通过发布填写表单。问题永远不会完整,字段和请求永远不会完成,显示“正常页面”而没有所需的结果。

代码:

use LWP::UserAgent;

my $nave = LWP::UserAgent->new();
$nave->timeout(5);
$nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");

my $target = "5.135.178.142";

$re = tomar(
  "http://www.melissadata.com/lookups/iplocation.asp",
  { 'ipaddress=' => $target, 'submit' => 'Submit' }
);

if ( $re =~ /City<\/td><td align=(.*)><b>(.*)<\/b><\/td>/ ) {
  print "Found : $2\n";
}
else {
  print $re;
}

sub tomar {
  my ($web, $var) = @_;
  return $nave->post($web, [%{$var}])->content;
}

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

为什么你的刮刀无效的答案是你感兴趣的网站使用Javascript,而LWP :: UserAgent不支持Javascript。

关于如何处理这个问题,你有几个选择。

  1. 解析JS,并使用the Javascript package

  2. 运行它
  3. 使用WWW::Mechanize::Firefox和perl将自动化firefox,并使用它来处理JS

  4. 这是Perl(TMTOWTDI)找到另一个可以为你解析/处理JS的包。