1

Pythonで正規表現を使用してWebページからハイパーリンクを抽出しようとしています。

私のテキスト文字列は次のとおりです。

text = '<a href="/status/ALL">ALL</a></td>/n<a href="/status/ASSIGN">ASSIGN</a></td>'

ALLとASSIGNを抽出したいので、次の正規表現を使用しています。

re.findall(r'<a href=.*>(\w+)</a>', text, re.DOTALL)

これはASSIGNを返すだけです。

誰かが正規表現の間違いを指摘するのを手伝ってくれませんか?私はこのトピックに本当に慣れていません。

4

1 に答える 1

2

正規表現を使用しているため、XMLとそのような式の照合は複雑になりすぎ、速度が速すぎます

自分で苦労せず、代わりにHTMLパーサーを使用してください。Pythonには次の選択肢がいくつかあります。

  • ElementTreeは標準ライブラリの一部です
  • BeautifulSoupは人気のサードパーティライブラリです
  • lxmlは、高速で機能豊富なCベースのライブラリです。

ElementTreeの例:

from xml.etree import ElementTree

tree = ElementTree.parse('filename.html')
for elem in tree.findall('a'):
    print ElementTree.tostring(elem)
于 2012-11-07T11:04:01.787 に答える