HTML이기 때문에 XPath 모듈이 HTML 작업을 위해 만들어진 것일 수도 있습니다 (HTML::TreeBuilder::XPath).
먼저 HTML :: TreeBuilder 메서드를 사용하여 문자열을 구문 분석해야합니다.
my $tree = HTML::TreeBuilder->new;
$tree->parse_file($file_name);
지금 당신이 관심있는 노드를 통해 반복자를 얻을 수 XPath 표현을 사용할 수 있습니다 웹 페이지의 내용을 가정하면 다음과 같이 그것을, $content
라는 변수입니다. 첫 번째 표현식은 html
요소에 body
에서 table
에 tr
에있는 모든 td
노드를 가져옵니다
마지막으로
my $tdNodes = $tree->findnodes('/html/body/table/tr/td');
당신은 당신이 원하는 것을 찾기 위해 루프에서 모든 노드를 반복 할 수 있습니다
를
foreach my $node ($tdNodes->get_nodelist) {
my $data = $node->findvalue('.'); // the content of the node
print "$data\n";
}
자세한 내용은 HTML::TreeBuilder 설명서를 참조하고 NodeSet 결과 개체 사용 방법은 NodeSet 설명서를 참조하십시오. w3schools에는 통행 할 수있는 XPath 튜토리얼 here이 있습니다.
이 모든 것으로, 당신은 당신이 원하는 모든 요소를 잡아 내기 위해 매우 견고한 HTML 파싱을 할 수 있어야합니다. XPath 쿼리에서 클래스, ID 등을 지정하여 원하는 노드를 구체적으로 지정할 수도 있습니다. 필자가 생각하기에,이 수정 된 XPath 라이브러리를 사용하여 HTML을 파싱하는 것은 일회성 정규식을 다루는 것보다 훨씬 빠르고 유지 보수가 용이합니다.
+1 예를 들어 코드. –