0

このコードは、意図したとおりに機能しないため、少し問題があります。正規表現がこれを行うための最良の方法ではないことは知っていますが、htmlパーサーでそれを行う方法を理解できず、美しいスープはオプションではありません. これが私がやろうとしていることです。HTMLファイルがあり、間の値を抽出する必要があります

<div class="e_mail"> and </div>

以下のコードを使用すると、メールアドレスが返されます。

['returned@email.com']

括弧や引用符なしでメールアドレスを取得するにはどうすればよいですか? IDはむしろregよりもきれいなものを使用しますが、私が言ったようにhtmlパーサーを理解できませんでした。

f=urllib.urlopen('results.html')
s = str(f.read())
return re.compile('<div class="e_mail">(.*?)</div>', re.DOTALL).findall(s)
4

2 に答える 2

1

行う

return re.compile(expr, re.DOTALL).findall(s)[0]

または:

return re.findall(r'<div class="e_mail">(.*?)</div>', s, re.DOTALL)[0]

結果がない場合、なぜなら空のリストを返すだけであることに注意してIndexErrorくださいre.findall

于 2012-11-15T22:32:14.213 に答える
0

これはあなたのために働くかもしれません:

f=urllib.urlopen('results.html')
s = str(f.read())
email = re.compile('<div class="e_mail">(.*?)</div>', re.DOTALL).findall(s)
return email[0]

また、返す前に空のリストでないことを確認してください。

于 2012-11-15T22:31:20.663 に答える