0 perl http http-status-code-301
我使用这个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;
}
Run Code Online (Sandbox Code Playgroud)
不可原谅的$page_to_get是,现在总是301重定向,并且$buf在打印时,给我一个301重定向页面,显然不包含所需的文本.是否有一个$in值对(例如),我可以使用它HTTPGet来跳过重定向,以便我得到我在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);
# ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
839 次 |
| 最近记录: |