0

Web サイトから取得した次の HTML タグを取得しました。

<ul><li>Some Keys in the UL List</li>
</ul>
<li>HKEY_LOCAL_MACHINE\SOFTWARE\Description</li>
<li>HKEY_LOCAL_MACHINE\SOFTWARE\Description\Microsoft</li>
<li>HKEY_LOCAL_MACHINE\SOFTWARE\Description\Microsoft\Rpc</li>
<li>HKEY_LOCAL_MACHINE\SOFTWARE\Description\Microsoft\Rpc\UuidTemporaryData</li>
</ul></ul>

<ul><li>Some objects in the UL LIST</li>
</ul>
<li>_SHuassist.mtx</li>
<li>MuteX.mtx</li>
<li>Something.mtx</li>
<li>Default.mtx</li>
<li>3$5.mtx</li>
</ul></ul>

タグ間の行(タグ<li>間のテキスト)を取得するにはどうすればよいですか? <ul>その場合、差分をとるクラスはありません。

BeautifulSoup と Regex についてはよくわかりません。

例としてこの結果が必要です:

<li>_SHuassist.mtx</li>
<li>MuteX.mtx</li>
<li>Something.mtx</li>
<li>Default.mtx</li>
<li>3$5.mtx</li>
4

3 に答える 3

1

BeautifulSoup:

>>> html = textabove
>>> from bs4 import BeautifulSoup as BS
>>> soup = BS(html)
>>> for ultag in soup.findAll('ul'):
...     for litag in ultag.findAll('li'):
...         print litag.text

どちらが印刷されますか:

ULリストのいくつかのキー
UL LIST の一部のオブジェクト

後者の<li>タグを取得するには:

>>> for litag in soup.findAll('li'):
...     if litag.text.endswith('.mtx'):
...         print litag
...         
<li>_SHuassist.mtx</li>
<li>MuteX.mtx</li>
<li>Something.mtx</li>
<li>Default.mtx</li>
<li>3$5.mtx</li>
于 2013-05-20T20:51:21.710 に答える
0

soup.find(text='UL LIST 内のいくつかのオブジェクト').findNext('ul').findAll('li')

@Haidroに感謝します。アイデアと検索をさせてくれました。助けてくれてありがとう。

于 2013-05-21T13:49:05.033 に答える
0

そのために正規表現は必要ありません。python のHTMLParserを見てください。

于 2013-05-20T20:59:22.387 に答える