正規表現を使用するのではなく、BeautifulSoupに html を解析させることから始めます。
次に、組み込みの検索機能を使用して、「abc」および「aom_pb」クラスを検索できます。
import BeautifulSoup
soup = BeautifulSoup.BeautifulSoup(downloaded_str)
key = soup.find('span', {'class': 'abc'}).text
value = soup.find('span', {'class': 'aom_pb'}).text
クラス タグが一意でない場合は、適切なタグが見つかるまでループします。
for li in soup.findAll('li'):
if li.find('span', attrs={'class': 'abc'}, text='Key 1:'):
print li.find('span', {'class': 'aom_pb'}).text
重要な点は、パーサーがこれを不明確なテキスト検索の問題ではなく、ツリー ナビゲーションの問題に変換できるようにすることです。
BeautifulSoup は、セットアップに簡単に追加できる単一の純粋な python ファイルです。人気のある選択肢です。より洗練された代替手段には、html5libおよびlxmlが含まれます。標準ライブラリにはHTMLParserが含まれていますが、やや単純化されており、不適切な形式の HTML をうまく処理できません。
正規表現のアプローチは少し壊れやすいですが、次のようなことを試すことができます (データが通常どのように配置されているかによって異なります)。
>>> s = '''<li><span class="abc">Key 1:</span> <span class="aom_pb">Value 1</span></li>'''
>>> re.search(r'Key 1:.*?(Value .*?)<', s).group(1)
'Value 1'