【问题标题】:Trying to get source of a webpage using get in perl尝试使用 get in perl 获取网页的来源
【发布时间】:2011-12-01 17:10:10
【问题描述】:

我试图在我的 perl 代码中获取网页的源代码,基本上这个网站是一个本地服务器,链接是 http://gold.star.com/isos/preFCS5.4/LASTESTDMS/ 我可以 ping 服务器,但我的代码中的 get 命令没有t 似乎在这里获取页面源代码是我正在尝试使用的代码

#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
my $dmsurl = 'http://gold.star.com/isos/preFCS5.4/LATESTDMS/'; 
my $page = get($dmsurl) or die "cannot\n";
print $page; 

每次我运行此代码时,我都会收到消息“Cannot”,但当我尝试在 opens 中使用我的浏览器时,我会收到相同的链接,但在代码中它不起作用。

【问题讨论】:

  • 您是否获得带有curlwget 的页面?我的意思是,你的代码对我来说可以很好地使用其他 URL。
  • 是的.. 它适用于其他一些 URL,但不适用于这个,上面的链接也适用于网络浏览器。 gold.star.com 是我们网络中的内部服务器。
  • 服务器错误和访问日志告诉您有关访问的哪些信息?
  • 您的网络是否使用代理?

标签: perl get webpage


【解决方案1】:

您的网站可能会阻止您的脚本,因为它认为它是机器人。您想通过查看 LWP 从您的站点获取的状态代码来找出答案。不幸的是,get 无法做到这一点。您可以使用getprintgetstore

use LWP::Simple;
my $dmsurl = 'http://gold.star.com/isos/preFCS5.4/LATESTDMS/'; 
my $rc = getprint($dmsurl);
print status_message($rc);

getprint 如果失败会显示状态码,所以打印状态信息有点多余。有关$rc 的更多信息,请参阅HTTP::Status

【讨论】:

    【解决方案2】:

    目标站点可能会检查 User-Agent 字段并响应例如 404 HTTP 错误。

    我会推荐你​​设置 User-Agent(使用 WWW::Mechanize):

    #!/usr/bin/perl
    
    use strict;
    use warnings;
    use WWW::Mechanize;
    my $mech = WWW::Mechanize->new();
    $mech->agent("Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18" );
    my $dmsurl = 'http://gold.star.com/isos/preFCS5.4/LATESTDMS/'; 
    $mech->get($dmsurl);
    print $mech->content(); 
    

    【讨论】:

      猜你喜欢
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 2012-09-27
      • 1970-01-01
      相关资源
      最近更新 更多