0

いくつかの HTML ドキュメントがあり、そこから非常に特定のテキストを抽出したいと考えています。現在、このテキストは常に次の場所にあります。

<div class = "fix">text </div>

さて、時々起こることは...他の開始divもあります...次のようなものです:

 <div class = "fix"> part of text <div something> other text </div> some more text </div>

今..に対応するすべてのテキストを抽出したい

 <div class = "fix">                     </div> markups??

どうすればいいですか?

4

2 に答える 2

2

BeautifulSoupライブラリを使用します。データが正しいhtmlである限り、探しているものが正確に見つかるはずです。彼らは適度に優れたドキュメントを持っており、初心者でも非常に簡単です. あなたのファイルが Web 上にあり、直接 HTML にアクセスできない場合は、urllib で HTML を取得してください。

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc)
soup.find({"class":"fix"})

複数の項目がある場合は、代わりに find_all を使用してください。これにより、探しているものが得られるはずです (大まかに)。

編集:修正された例(classはキーワードなので、通常の(attr = "blah")は使用できません)

于 2013-04-12T18:03:05.493 に答える
1

これは、貪欲でない正規表現を使用してすべての html タグを削除する、非常に単純なソリューションです。

import re
s =  "<div class = \"fix\"> part of text <div something> other text </div> some more text </div>"
s_text = re.sub(r'<.*?>', '', s)

値は次のとおりです。

print(s)
<div class = "fix"> part of text <div something> other text </div> some more text </div>
print(s_text)
 part of text  other text  some more text
于 2013-04-12T18:02:34.807 に答える