这两个版本都可以,还是其中一个?
#!/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;
答案 0 :(得分:3)
他们都是可以接受的。第二个对我来说似乎更干净,因为它返回一个正确的HTTP::Response对象,你可以查询和调用方法,也意味着如果你再发出一个Mechanize请求,你仍然可以访问旧的HTTP响应。使用第一种方法,每次发出请求时,content
方法都会更改为新的,这听起来容易出错。
顺便说一句,对于这两种方法,您都应该在访问内容之前检查$response->is_success
或$mech->success
,因为请求可能已失败。
答案 1 :(得分:2)
content()方法有时更方便:
$mech->content(...)
返回mech在内部用于获取的最后一页的内容。通常这与$ mech-> response() - > content()相同,但如果“update_html”重载,和/或额外的命名参数传递给content(),则HTML文档可能会有所不同:
$mech->content( format => 'text' )
返回页面的纯文本版本,并删除所有HTML标记。此功能需要安装HTML :: TreeBuilder,否则将引发致命错误。
$mech->content( base_href => [$base_href|undef] )
返回HTML文档,修改为在标题中包含标记。如果没有指定,$ base_href是$ mech-> base()。将HTML传递给例如HTML是很方便的。 HTML ::显示。
答案 2 :(得分:1)
$ mech->内容特别存在,因此您可以绕过必须获得结果响应。它越简单越好。