2012-03-11 3 views
0

Perl에서 모듈 WWW::Mechanize (필수, 다른 모듈 필요 없음)을 사용하면 url 대신 문자열 변수에서 문서를 "구문 분석"할 수 있습니까?Perl WWW :: Mechanize from 문자열 변수

내가 대신

 $mech->get($url); 

의 의미

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

같은 일이 가능 할까?

답변

1

는 알았어요 :

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

의미가 있습니다!

+2

어리석은 인터페이스. 나는 문서에서 그것을 찾을 수 없다는 것은 놀랄 일이 아니다. – singingfish

-2

아니요. $mech->response을 사용하여 HTTP::Response 개체를 가져온 다음 해당 개체의 content 메서드를 사용하여 콘텐츠를 자신의 문자열로 바꿀 수 있습니다. 그러나 모든 메시지 헤더도 조정해야하므로 상당히 엉망이됩니다.

원하는 것은 무엇입니까? formsimages과 같은 WWW::Mechanize과 같은 메서드는 다른 모듈을 기반으로하며 코드 작성이 매우 간단합니다.

+0

다른 프로그램에서 가져 와서 입력으로 전달 된 HTML 코드를 분석해야합니다. –

1

데이터를 디스크에 쓴 다음 일반적인 방법으로 가져올 수 있습니다. 이런 식으로 뭔가 :

#!/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> < 몸 > foo는 </몸 > </HTML >

+0

나는 File :: Temp를 사용하여 디스크에 데이터를 쓰고 $ mech-> get (URI :: file-> new ($ tempfilename))으로 기계화하도록 보내자. – singingfish

+0

@singingfish 대단히 감사합니다. 아웃. 나는 그에 맞게 예제를 업데이트했다. 코드를 멋지게 정리합니다. – oalders

관련 문제