0

正規表現を使用してテーブル内のセルを照合しようとしていますが、問題はすべてのセルが同じパターンに従っていないことです。たとえば、td は次の形式を取る場合があります。

<td><a href="page101010.html">PageNumber</a></td>

またはこの形式:

<td align="left" ></td>

基本的に、td 内のハイパーリンク部分はすべてではなく、一部にのみ存在します。

以下のpython正規表現コードを使用してこの状況を照合しようとしましたが、失敗しました。

match = re.search(r'<td align="left" ><?a?.+\>?(.+)\<?\/?a?\>?\<\/td\>', tdlink)

上記の () で囲まれた部分を見つけるには、「一致」する必要があります。ただし、構文エラーまたは None Object メッセージが表示されます。

どこが間違っていますか?

4

1 に答える 1

6

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

代わりにHTMLパーサーを使用してください。Pythonには次の選択肢があります。

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

ElementTreeの例:

from xml.etree import ElementTree

tree = ElementTree.parse('filename.html')
for elem in tree.findall('tr'):
    print ElementTree.tostring(elem)
于 2012-09-06T21:05:12.603 に答える