2011-06-13 5 views
0

주어진 웹 페이지에서 빈 템플릿을 생성 할 수 있도록 모든 HTML 요소 사이의 모든 텍스트를 무시하거나 제거해야합니다.HTML에서 텍스트 무시 :: TreeBuilder 출력 Perl

나는 펄 모듈 HTML :: TreeBuilder와 HTML :: Element를 사용하여 파싱 중이다.

설명서에 기록 된 ignore_text 메서드를 시도했지만 올바른 결과를 제공하지 않습니다.

나는 또한 DOMXpath를 사용하여 동일한 작업을 수행하고 결과를 관리하는 것이 너무 번거로운 것처럼 보였습니다. 정규 표현식이 효과가 있지만 최후의 수단입니다.

이것은 현재 기본 제공되는 코드의 일부입니다. 하단이 파일로 출력됩니다. 모든 코드가 작동합니다. 서식 파일을 생성 할 수 있도록 서식을 지정하면됩니다. 도움에 미리

my $url= "http://www.example.com";

my $page = get($url) or die $!; 
my $tree = HTML::TreeBuilder->new_from_content($page); 

$tree->parse_file($page); 

$tree->ignore_text; 
$tree->elementify; 

open OUTPUT, "+>".$body; 
my $output = $tree->as_HTML; 
print OUTPUT $output; 
close OUTPUT; 

감사합니다!

편집 : 문제를 발견했습니다 - 텍스트 무시는 실제 파일에서 구문 분석 할 때만 작동합니다. 나는 임시 파일로 페이지를 저장해야만했다. 그런 다음 텍스트가없는 방식으로 결과를 출력했다. 그런 다음 파일을 삭제하기 위해 맨 아래에 unlink ($ tmp)를했다. 내 스크립트는 이후 데이터베이스를 읽고 쓰는 것보다 훨씬 복잡해졌으며 성가신 일종의 임시 파일을 만들어야 할 때마다 ...

답장을 보내 주셔서 감사합니다!

+1

대신 다른 사람들이 혜택을 누릴 수 있도록 솔루션을 제공하거나 질문을 삭제하거나 (당신이 다음 받아 들일 수) 답변으로 솔루션을 게시 편집을 제안의 행운을 빕니다. SO의 작동 방식에 대해 자세히 알아 보려면 [FAQ] (http://stackoverflow.com/faq)를 읽어보십시오. :) –

답변

0

아주 가까이 있습니다.

ignore_text을 true로 설정해야합니다. $tree->ignore_text(1)을 입력 한 다음 parse_file을 호출하기 전에 해당 설정이 올바른지 확인하십시오.

죄송합니다. 조금 오래되었지만 도움이 되었기를 바랍니다. 여기

예 페이지없이 테스트, 하드 새 코드에서 빠른 패스입니다 : 여기

my $tree = HTML::TreeBuilder->new; 

$tree->ignore_text(1); 
$tree->elementify; 
$tree->parse_file($page); 

있는 로컬 파일 사용하여 내 빠른 테스트 스크립트를

use strict; 
use warnings; 

use HTML::TreeBuilder; 

my $page = 'test.html'; 
my $tree = HTML::TreeBuilder->new(); 

$tree->ignore_text(1); 
$tree->parse_file($page); 
$tree->elementify; 

print $tree->as_HTML; 

입력 test.html을 :

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>title text</title> 
</head> 
<body> 
    <h1>Heading 1</h1> 
    <p>paragraph text</p> 
</body> 
</html> 

출력 :

<html xmlns="http://www.w3.org/1999/xhtml"><head><title></title></head><body><h1></h1><p></body></html> 

-1

HTML :: Parser를 사용해야 할 수도 있습니다. 아마도 약간의 코드 일 것이지만 복잡하지 않아야합니다.

관련 문제