Perl에서 모듈 WWW::Mechanize
(필수, 다른 모듈 필요 없음)을 사용하면 url 대신 문자열 변수에서 문서를 "구문 분석"할 수 있습니까?Perl WWW :: Mechanize from 문자열 변수
내가 대신
$mech->get($url);
의 의미
$html = '<html...';
$mech->???($html);
같은 일이 가능 할까?
Perl에서 모듈 WWW::Mechanize
(필수, 다른 모듈 필요 없음)을 사용하면 url 대신 문자열 변수에서 문서를 "구문 분석"할 수 있습니까?Perl WWW :: Mechanize from 문자열 변수
내가 대신
$mech->get($url);
의 의미
$html = '<html...';
$mech->???($html);
같은 일이 가능 할까?
는 알았어요 :
$mech->get(0);
$mech->update_html('<html>...</html>');
의미가 있습니다!
아니요. $mech->response
을 사용하여 HTTP::Response
개체를 가져온 다음 해당 개체의 content
메서드를 사용하여 콘텐츠를 자신의 문자열로 바꿀 수 있습니다. 그러나 모든 메시지 헤더도 조정해야하므로 상당히 엉망이됩니다.
원하는 것은 무엇입니까? forms
및 images
과 같은 WWW::Mechanize
과 같은 메서드는 다른 모듈을 기반으로하며 코드 작성이 매우 간단합니다.
다른 프로그램에서 가져 와서 입력으로 전달 된 HTML 코드를 분석해야합니다. –
데이터를 디스크에 쓴 다음 일반적인 방법으로 가져올 수 있습니다. 이런 식으로 뭔가 :
#!/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 >
나는 File :: Temp를 사용하여 디스크에 데이터를 쓰고 $ mech-> get (URI :: file-> new ($ tempfilename))으로 기계화하도록 보내자. – singingfish
@singingfish 대단히 감사합니다. 아웃. 나는 그에 맞게 예제를 업데이트했다. 코드를 멋지게 정리합니다. – oalders
어리석은 인터페이스. 나는 문서에서 그것을 찾을 수 없다는 것은 놀랄 일이 아니다. – singingfish