Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 访问WWW::Mechanize响应的首选方法是什么?_Perl_Www Mechanize - Fatal编程技术网

Perl 访问WWW::Mechanize响应的首选方法是什么?

Perl 访问WWW::Mechanize响应的首选方法是什么?,perl,www-mechanize,Perl,Www Mechanize,这两个版本都可以吗?还是其中一个更适合 #!/usr/bin/env perl use strict; use warnings; use WWW::Mechanize; my $mech = WWW::Mechanize->new(); my $content; # 1 $mech->get( 'http://www.kernel.org' ); $content = $mech->content; print $content; # 2 my $res = $mech

这两个版本都可以吗?还是其中一个更适合

#!/usr/bin/env perl
use strict;
use warnings;
use WWW::Mechanize;

my $mech = WWW::Mechanize->new();
my $content;

# 1
$mech->get( 'http://www.kernel.org' );
$content = $mech->content;
print $content;

# 2
my $res = $mech->get( 'http://www.kernel.org' );
$content = $res->content;
print $content;

它们都是可以接受的。第二个对我来说似乎更干净,因为它返回一个适当的对象,您可以查询和调用该对象上的方法,还意味着如果您发出另一个请求,您仍然可以访问旧的HTTP响应。在第一种方法中,每次发出请求时,
内容
方法都会更改为新的方法,这听起来很容易出错

顺便说一句,对于任何一种方法,您都应该在访问内容之前检查
$response->is_success
$mech->success
,因为请求可能失败。

该方法有时更方便:

$mech->content(...)
返回mech在内部为获取的最后一页使用的内容。通常这与$mech->response()->content()相同,但如果“update_HTML”过载,和/或将额外命名的参数传递给content(),则HTML文档的情况可能有所不同:

返回页面的纯文本版本,并删除所有HTML标记。此功能要求安装HTML::TreeBuilder,否则将引发致命错误

$mech->content( base_href => [$base_href|undef] )

返回HTML文档,修改为在标题中包含标记$如果未指定,则base_href为$mech->base()。这对于将HTML传递到例如HTML::Display非常方便。

$mech->内容专门在那里,因此您可以绕过获取结果响应的过程。越简单越好。

来自perldoc:standalone WWW::Mechanize实例的自动检查已启用。但是,如果WWW::Mechanize是子类的,它就关闭了。哦,哇,上次我使用Mechanize时,这个选项不存在。那是在2008年。。。现在我觉得自己老了:(我添加autocheck是因为人们进入#perl IRC频道抱怨$mech->content是空的,因为他们懒得检查$mech->success。现在,最常见的情况是默认情况。$mech->content(format=>'text')在我的机器上不起作用。(安装了HTML::TreeBuilder)检查您的版本,您需要WWW::Mechanize 1.05_03或更高版本(2004年发布)好的,它可以工作,也许我尝试它时是trunk。但是最近有没有一个WWW::Mechanize版本,该功能不能与perl 5.10.0或5.10.1一起工作?
$mech->content( base_href => [$base_href|undef] )