0

BeautifulSoup を使用して要素を取得し、テキストを抽出できる html ドキュメントがあります。しかし、私の問題は、「getText()」メソッドを使用してドキュメントの本文を取得しようとすると、すべての段落がマージされ、1 行が返されることです。別の段落を取得するためにさまざまな方法を試しましたが、まだ成功していません。ドキュメントの形式は次のとおりです。

<div class="body" style="text-align: justify;padding: 20px;">   <div align="justify"><span style="font-weight: bold; color: rgb(128, 0, 0);"><img style="border: medium none; margin-left: 10px;" alt="" title="" src="/files/7/7/86119_216.jpg" align="right">ABC-</span>Paragraph 1<br><br>Paragraph  2<br><br>Paragraph  3<br><br><span style="font-weight: bold;">Paragraph  4</span><br>Paragraph  5 <span style="font-weight: bold; font-style: italic; text-decoration: underline; color: rgb(128, 0, 0);">Paragraph 6</span>Paragraph <br><br>Paragraph</div> <div class="wrapper"></div> </div>  </div>

このドキュメントの本文を取得するために現在使用しているものは次のとおりです。

soup = BeautifulSoup( page )
body = soup.find("div", {"class":"body"})

ここまではすべて問題ありません。私の問題は、本文の段落を取得する方法です。何か案は?


別の html ファイルを処理しようとすると、段落の抽出で別の問題が発生しました。この新しいページの形式は次のとおりです。

<div class="detailCont">
    <span>News agency:</span>
    <h2>
        Header

    </h2>
        <div>
            <img class="showNewsImg" src="http://images.agency.com/images/position36/2013/9/khrid_hvapyma-910407-as.jpg" />
        </div>

    <div class="lead">
        <span>additional info</span>-
        agency:<br />Paragraph 1
    </div>

    <p>Paragraph 2</p>
    <p>Paragraph 3</p>
    <p>Paragraph 4</p>
    <p>Paragraph 5</p>
    </div>

必要なデータはすべてこの部分にあります。したがって、次のコマンドを使用してこの部分を取得できます。

doc = soup.find("div", {"class":"detailCont"})

耳と体の両方が含まれています。ヘッダーを取得するには、次のコマンドを使用します。

header = doc.h2

しかし、どうすれば体だけを手に入れることができるのかわかりません。何か案は?ベスト。

4

1 に答える 1

0

Use a list comprehension:

[s for s in body.strings if s.strip() != '']

It yields:

['ABC-',
 'Paragraph 1',
 'Paragraph  2',
 'Paragraph  3',
 'Paragraph  4',
 'Paragraph  5 ',
 'Paragraph 6',
 'Paragraph ',
 'Paragraph']
于 2013-09-29T21:00:07.730 に答える