Perl WWW ::从字符串变量机械化

问题描述:

在Perl中,使用模块WWW::Mechanize(必需,而不是其他模块),是否有可能从字符串变量,而不是URL“解析”文档?Perl WWW ::从字符串变量机械化

我的意思,而不是

 $mech->get($url); 

做这样的事情

 $html = '<html...'; 
     $mech->???($html); 

可能吗?

明白了:

  $mech->get(0); 
      $mech->update_html('<html>...</html>'); 

它的工作原理!

+2

什么傻的接口。难怪我无法在文档中找到它。 – singingfish 2012-03-14 09:01:45

不是。您可以尝试使用$mech->response获取HTTP::Response对象,然后使用该对象的content方法将内容替换为您自己的字符串。但是你必须调整所有的消息头,它会变得非常混乱。

你想要做什么? WWW::Mechanize提供的formsimages等方法基于其他模块,代码相当简单。

+0

我需要分析其他程序获取并作为输入传入的HTML代码。 – 2012-03-12 02:09:13

您可以将数据写入磁盘,然后以通常的方式获取()。事情是这样的:

#!/usr/bin/env perl 

use strict; 
use warnings; 

use File::Temp; 
use URI::File; 
use WWW::Mechanize; 

my $data = '<html><body>foo</body></html>'; 

# write the data to disk 
my $fh = File::Temp->new; 
print $fh $data; 
$fh->close; 

my $mech = WWW::Mechanize->new; 
$mech->get(URI::file->new($fh->filename)); 

print $mech->content; 

打印:<HTML> <体>富< /身体> </HTML >

+0

我只是使用File :: Temp将数据写入磁盘并获得发送机械化使用$ mech-> get(URI :: file-> new($ tempfilename)) – singingfish 2012-03-12 09:27:10

+0

@singingfish非常感谢您指出出。我相应地更新了我的示例。很好地将代码降下来。 – oalders 2012-03-12 17:03:21