0

この小さなコードがあり、AttributeError: 'NoneType' オブジェクトに属性 'group' がありません。

import sys
import re

#def extract_names(filename):

f = open('name.html', 'r')
text = f.read()

match = re.search (r'<hgroup><h1>(\w+)</h1>', text)
second = re.search (r'<li class="hover">Employees: <b>(\d+,\d+)</b></li>', text)  

outf = open('details.txt', 'a')
outf.write(match)
outf.close()

<h1>私の意図は、タグの値と従業員数を探して .HTML ファイルを読み取り、それらをファイルに追加することです。しかし、なぜかうまくまとまらないようです。よろしくお願いいたします。

4

2 に答える 2

6

正規表現を使用していますが、そのような表現で XML を一致させると、複雑すぎて速すぎます。そうしないでください。

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

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

後者の 2 つは、不正な形式の HTML を非常に適切に処理し、多くの失敗した Web サイトを適切に理解します。

ElementTree の例:

from xml.etree import ElementTree

tree = ElementTree.parse('filename.html')
for elem in tree.findall('h1'):
    print ElementTree.tostring(elem)
于 2012-09-20T13:15:09.007 に答える
1

完了するために、エラーメッセージは、正規表現が失敗し、何も返さなかったことを示しています...

于 2012-09-20T15:35:34.713 に答える