re
モジュールを使用して、すべての属性を含む文字列からすべての html ノードを抽出したいと考えています。ただし、各 attr をグループにしたいので、 を使用matchobj.group()
してそれらを取得できます。ノード内の属性の数は柔軟です。これは私が混乱しているところです。そのような正規表現の書き方がわかりません。私は試してみ</?(\w+)(\s\w+[^>]*?)*/?>'
ましたが、のようなノードで<a href='aaa' style='bbb'>
は で 2 つのグループしか取得できません[('a'), ('style="bbb")]
。
優れた HTML パーサーがいくつかあることは知っています。しかし、実際には属性の値を抽出するつもりはありません。生の文字列を変更する必要があります。
2 に答える
3
正規表現を使用しないでください。使用BeautifulSoup
:
>>> from bs4 import BeautifulSoup as BS
>>> html = """<a href='aaa' style='bbb'>"""
>>> soup = BS(html)
>>> mytag = soup.find('a')
>>> print mytag['href']
aaa
>>> print mytag['style']
bbb
または、辞書が必要な場合:
>>> print mytag.attrs
{'style': 'bbb', 'href': 'aaa'}
于 2013-06-28T01:56:20.310 に答える