簡體   English   中英

如何使用HTML :: Parser提取標簽之間的文本?

[英]How can I extract text between tags using HTML::Parser?

我需要從網頁上解析一些數據。 如何使用HTML :: Parser提取標簽之間的文本?

考慮以下示例代碼:

#!/usr/bin/perl

use strict;
use warnings;

use HTML::Parser;
use Data::Dumper;

my $find_title = HTML::Parser->new(
    api_version => 3,
    start_h => [ 
        sub {
             my ($tag, $attr) = @_;
             print Dumper \@_;
            }, 
        'tag'
               ],
  );

my $html = join '',
    "<html><head><title>Extract me!</title></head><body>",
    (map { qq(<a href="http://$_.com">$_</a>) } qw/foo bar baz/),
    "</body></html>";

$find_title->report_tags('title');
$find_title->parse($html);

如何解決此問題,以便提取標題? 這僅提取標簽。

你需要一個text_h處理程序來收集文字和end_h處理程序時做一些事情</title>出現標簽(此時,在標簽內的文本已經被收集)。

HTML :: Parser是一個相當底層的模塊,您可能更高興使用基於它構建的眾多模塊之一,例如HTML :: TreeBuilderHTML :: TokeParser

例如, HTML :: HeadParser使提取標題變得簡單:

use strict;
use warnings;

use HTML::HeadParser;

my $html = join '',
    "<html><head><title>Extract me!</title></head><body>",
    (map { qq(<a href="http://$_.com">$_</a>) } qw/foo bar baz/),
    "</body></html>";

my $p = HTML::HeadParser->new;
$p->parse($html);

my $title = $p->header('Title');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM