簡體   English   中英

如何在Perl應用程序中處理HTTP重定向?

[英]How can I handle HTTP redirects in my Perl application?

我使用此Perl子例程從網頁獲取一行,然后將其拆分以獲取所需的信息。 這已經工作了十二年。

sub capture_line {

   my $page_to_get = $_[0];
   my $host_to_get_text = $_[1];
   my $port = 80;
   my $buf = &HTTPGet($page_to_get, $host_to_get_text, $port);
   my $image_capture_text;
   my @lines = split(/\n/,$buf);
#      print "$lines[1]\n";
#      print "$page_to_get, $host_to_get_text\n";
#      print "$buf\n";

    foreach (@lines) {
       if (/$text_to_find/i) {
          $image_capture_text = $_;
     print "in_loop";
       last;
       }

     }
    return $image_capture_text;
}

不幸的是, $page_to_get現在始終是301重定向,而$buf在打印時為我提供了301重定向頁面,該頁面顯然不包含所追求的文本。 是否存在可以與HTTPGet一起使用的$in值對(例如),使我跳過重定向,以便獲得在瀏覽器中輸入http://$host_to_get_text$page_to_get時看到的頁面? 還是有更好的方法來完成相同的事情(在瀏覽的網頁源中了解不斷變化的文件名)?

感謝您的時間。 格雷格·馬什

HTTPGet函數從哪里來?

如果您要使用LWP( http://search.cpan.org/dist/libwww-perl/ )進行HTTP提取,則會自動執行重定向操作(您可以指定希望其執行重定向操作的次數之前,放棄)。

例如:

   use LWP::Simple qw()
   my ($page_to_get, $host_to_get_text) = @_;
   my $url = "http://$host_to_get_text$page_to_get";
   my $buf = LWP::Simple::get($url);
   my $image_capture_text;
   my @lines = split(/\n/,$buf);
   # ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM