5
A
답변
9
HTML::TreeBuilder::XPath는 대부분의 문제에 대한 괜찮은 솔루션입니다.
6
필자는 BeautifulSoup을 한번도 사용하지 않았지만 설명서를 빨리 보지 않고서는 HTML::TreeBuilder을 원할 수도 있습니다. 깨진 문서도 잘 처리 할 수 있으며 파싱 된 트리 또는 쿼리 항목을 통과 할 수 있습니다. HTML::Element의 look_down
메서드를 확인하십시오.
XPath를/알고 있으면 daxim의 권장 사항을 참조하십시오. CSS 선택기를 통해 항목을 선택하려면 Web::Scraper 또는 Mojo::DOM을보십시오.
1
강력한 기능을 원하는 사용자는 XML :: LibXML을 사용하여 HTML을 구문 분석 할 수 있습니다. 그런 다음 이점은 XPath 및 XSLT를 포함하여 Perl이 문서를 처리 할 수있는 가장 빠르고 가장 우수한 XML 도구 체인 (MSXML 인 excecpt MSXML)을 가지고 있다는 것입니다 (XPath 및 XSLT를 포함하여 다른 언어를 사용하면 다시 구문 분석해야 함) 파서보다 XML :: LibXML).
use strict;
use warnings;
use XML::LibXML;
# In 1.70, the recover and suppress_warnings options won't shup up the
# warnings. Hence, a workaround is needed to keep the messages away from
# the screen.
sub shutup_stderr {
my($subref, $bufref) = @_;
open my $fhbuf, '>', $bufref;
local *STDERR = $fhbuf;
$subref->(); # execute code that needs to be shut up
return;
}
# ==== main ============================================================
my $url = shift || 'http://www.google.de';
my $parser = XML::LibXML->new(recover => 2); # suppress_warnings => 1
# Note that "recover" and "suppress_warnings" might not work - see above.
# https://rt.cpan.org/Public/Bug/Display.html?id=58024
my $dom; # receive document
shutup_stderr
sub { $dom = $parser->load_html(location => $url) }, # code
\my $errmsg; # buffer
# Now process document as XML.
my @nodes = $dom->getElementsByLocalName('title');
printf "Document title: %s\n", $_->textContent for @nodes;
printf "Lenght of error messages: %u\n", length $errmsg;
print '-' x 72, "\n";
print $dom->toString(1);
관련 문제
- 1. html 페이지의 데이터 파싱
- 2. HTML 조각 파싱
- 3. libxml2 HTML 청크 파싱
- 4. html 파싱 - objective c 코코아
- 5. regexp objective-c. html 파싱
- 6. 간단한 libtool 대안?
- 7. 좋은 Javascript 기반 HTML 파싱 라이브러리가 있습니까?
- 8. Perl Escape :: HTML 함수가 이스케이프 #?
- 9. html, 하이퍼 링크, perl, reload
- 10. MIME :: Lite :: TT :: HTML Perl 설치 문제
- 11. Perl : html 테이블을 그림 이미지로 변환합니다.
- 12. Perl AJAX에서 html 문자를 스트링에서 제거하고 있습니까?
- 13. Perl : 인증 된 웹 사이트에서의 HTML 스크래핑
- 14. "html 민첩성 팩"perl 용 모듈
- 15. Perl 5.6에 HTML-Parser-3.64를 어떻게 설치합니까?
- 16. perl HTML 구문 분석에 대한 약간의 도움
- 17. perl doc/pdf/xls에서 HTML 변환기
- 18. Python의 BeautifulSoup에서 인라인 파싱
- 19. iphone - ".../libtool : -lxml2 파일을 찾을 수 없습니다"
- 20. automake + libtool + C++ = 매우 부풀어 오른 인터페이스
- 21. libtool 파이썬 모듈 연결 및 설치
- 22. Windows에서 Libtool 및 LoadLibrary()가있는 모듈
- 23. 파싱 HTTP_ACCEPT_LANGUAGE
- 24. 문자열 파싱
- 25. 파싱 응답
- 26. Htmlnode 모음 및 파싱
- 27. Groovy Project (html 파싱, 파일 다운로드, 파일 생성)
- 28. Ruby 1.9.x에서 html 태그를 찾으려면 텍스트를 파싱
- 29. html 페이지를 파싱하고 파싱 된 데이터를 다른 페이지로 전송
- 30. 중첩 된 HTML 요소 값을 원본 순서로 파싱/결합하기
감사합니다. – icn