1

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

4

2 に答える 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 に答える