如何从多组HTML标记中提取文本?

时间:2016-10-14 14:46:09

标签: perl html-parsing

我有一批文本文件,我试图从中删除HTML标记。我希望在每个文件中保留的文本位于<TEXT></TEXT>之间。在其中一些文件中,我希望保留文档下半部分中的第二个<TEXT></TEXT>实例。

HTML::Restrict非常适合在第一个实例中保留所有相关文字,但它似乎不会保留<TEXT></TEXT>的第二个实例之间的文字。

我的代码是:

$hr = HTML::Restrict->new() ;
$processed = $hr->process($doc) ;

我无法识别HTML :: Restrict模块中我可以调整的任何选项,以确保保留文本文件的第二部分。存在这样的选择,还是有更好的方法来完成这项任务?我已经尝试了一些正则表达式,但到目前为止,我也遇到了类似的问题。

以下是原始文件。结果输出是<TEXT>的第一个实例(紧接在“UNITED STATES”之上)和从底部开始的第三个灰色框中的第一个</TEXT>实例。

-----BEGIN PRIVACY-ENHANCED MESSAGE-----
Proc-Type: 2001,MIC-CLEAR
Originator-Name: webmaster@www.sec.gov
Originator-Key-Asymmetric:
 MFgwCgYEVQgBAQICAf8DSgAwRwJAW2sNKK9AVtBzYZmr6aGjlWyK3XmZv3dTINen
 TWSM7vrzLADbmYQaionwg5sDW3P6oaM5D3tdezXMm7z1T+B+twIDAQAB
MIC-Info: RSA-MD5,RSA,
 VlTZCBM7TRNLONv/I0OgPsjKD23uR2Zn9/jJ4XrBQY8DlPxfH2+iX+W5TZjhZEQY
 shGRyuAw29phAaxb1IPhgQ==

<SEC-DOCUMENT>0001157523-06-001366.txt : 20060209
<SEC-HEADER>0001157523-06-001366.hdr.sgml : 20060209
<ACCEPTANCE-DATETIME>20060209161745
ACCESSION NUMBER:       0001157523-06-001366
CONFORMED SUBMISSION TYPE:  8-K
PUBLIC DOCUMENT COUNT:      2
CONFORMED PERIOD OF REPORT: 20060209
ITEM INFORMATION:       Results of Operations and Financial Condition
ITEM INFORMATION:       Financial Statements and Exhibits
FILED AS OF DATE:       20060209
DATE AS OF CHANGE:      20060209

FILER:

    COMPANY DATA:   
        COMPANY CONFORMED NAME:         ANALOG DEVICES INC
        CENTRAL INDEX KEY:          0000006281
        STANDARD INDUSTRIAL CLASSIFICATION: SEMICONDUCTORS & RELATED DEVICES [3674]
        IRS NUMBER:             042348234
        STATE OF INCORPORATION:         MA
        FISCAL YEAR END:            1205

    FILING VALUES:
        FORM TYPE:      8-K
        SEC ACT:        1934 Act"
        SEC FILE NUMBER:    001-07819
        FILM NUMBER:        06593279

    BUSINESS ADDRESS:   
        STREET 1:       ONE TECHNOLOGY WAY
        CITY:           NORWOOD
        STATE:          MA
        ZIP:            02062
        BUSINESS PHONE:     7813294700

    MAIL ADDRESS:   
        STREET 1:       ONE TECHNOLOGY WAY
        CITY:           NORWOOD
        STATE:          MA
        ZIP:            02062
</SEC-HEADER>
<DOCUMENT>
<TYPE>8-K
<SEQUENCE>1
<FILENAME>a5077045.txt
<DESCRIPTION>ANALOG DEVICES, INC., 8-K
<TEXT>

                                  UNITED STATES
                       SECURITIES AND EXCHANGE COMMISSION
                             Washington, D.C. 20549

                                    FORM 8-K

                                 CURRENT REPORT
     Pursuant to Section 13 OR 15(d) of The Securities Exchange Act of 1934


Date of Report (Date of earliest event reported):  February 9, 2006

                              Analog Devices, Inc.
- --------------------------------------------------------------------------------
             (Exact name of registrant as specified in its charter)

      Massachusetts               1-7819                  04-2348234
- --------------------------------------------------------------------------------
 (State or other juris-         (Commission              (IRS Employer
diction of incorporation       File Number)           Identification No.)


     One Technology Way, Norwood, MA                          02062
- --------------------------------------------------------------------------------
(Address of principal executive offices)                    (Zip Code)


Registrant's telephone number, including area code:  (781) 329-4700


- --------------------------------------------------------------------------------
          (Former name or former address, if changed since last report)


Check the appropriate box below if the Form 8-K filing is intended to
simultaneously satisfy the filing obligation of the registrant under any of the
following provisions (see General Instruction A.2. below):

|_|  Written communications pursuant to Rule 425 under the Securities Act (17
     CFR 230.425)

|_|  Soliciting material pursuant to Rule 14a-12 under the Exchange Act (17 CFR
     240.14a-12)

|_|  Pre-commencement communications pursuant to Rule 14d-2(b) under the
     Exchange Act (17 CFR 240.14d-2(b))

|_|  Pre-commencement communications pursuant to Rule 13e-4(c) under the
     Exchange Act (17 CFR 240.13e-4(c))


<PAGE>


Item 2.02.  Results of Operations and Financial Condition

     On February 9, 2006, Analog Devices, Inc. announced its financial results
for the quarter ended January 28, 2006. The full text of the press release
issued in connection with the announcement is attached as Exhibit 99.1 to this
Current Report on Form 8-K.

     The information in this Form 8-K and the exhibit attached hereto shall not
be deemed "filed" for purposes of Section 18 of the Securities Exchange Act of
1934 (the "Exchange Act") or otherwise subject to the liabilities of that
section, nor shall it be deemed incorporated by reference in any filing under
the Securities Act of 1933 or the Exchange Act, except as expressly set forth by
specific reference in such a filing.



                                  EXHIBIT INDEX

Exhibit No.                Description
- -----------                -----------

99.1                       Press release dated February 9, 2006 issued by Analog
                           Devices, Inc.
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-99.1
<SEQUENCE>2
<FILENAME>a5077045ex99_1.txt
<DESCRIPTION>EXHIBIT 99.1
<TEXT>
                                                                    Exhibit 99.1


                     Analog Devices Reports Results for the
                       First Quarter of Fiscal Year 2006

    NORWOOD, Mass.--(BUSINESS WIRE)--Feb. 9, 2006--Analog Devices,
Inc. (NYSE: ADI):

    --  Board of Directors declares dividend of $0.12 per share for
        the quarter.

    --  Financial results for the first quarter and guidance for the
        second quarter to be discussed on conference call today at
        4:30 pm.

    Analog Devices, Inc. (NYSE: ADI), a global leader in
high-performance semiconductors for signal processing applications,
today announced revenue of $621.3 million for the first quarter of
fiscal 2006, an increase of 7% compared to the same period one year
ago and approximately even with the immediately prior quarter's $622.1
million in revenue.



    CONTACT: Analog Devices, Inc.
             Maria Tagliaferro,781-461-3282
             Director of Corporate Communications,
             781-461-3491 (fax)
             investor.relations@analog.com
</TEXT>
</DOCUMENT>
</SEC-DOCUMENT>
-----END PRIVACY-ENHANCED MESSAGE-----

2 个答案:

答案 0 :(得分:2)

由于您实际上没有HTML文档,因此您需要一个不会被抛出的各种垃圾扔掉的解析器。

在下面的示例中,为方便起见,我将上面的示例文本放在脚本的__DATA__部分中。在现实世界中,您应该使用适当的编码打开文件。

#!/usr/bin/env perl

use strict;
use warnings;

use HTML::TokeParser::Simple;

my $parser = HTML::TokeParser::Simple->new(handle => \*DATA);

my @text;

while (my $token = $parser->get_token) {
    if ($token->is_start_tag('text')) {
        push @text, $parser->get_text('/text');
    }
}

print "[[[>>>$_<<<]]]\n\n" for @text;

__DATA__

答案 1 :(得分:1)

这应该给你所有的比赛(我自己测试):

my @text = $doc =~ /<TEXT>(.*?)<\/TEXT>/gs