4

Python で受信メールを解析しようとしています。一部がテキストで一部が HTML のメールを受け取ります。HTML 部分を取得し、HTML でテーブルを見つけたいと考えています。

ビューティフルスープを使ってみました。しかし、次のコードを試すと、bs は最初の "" 部分のみを取得し、すべての HTML 部分を取得するわけではありません:

# connecting to the gmail imap server
m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login(user,pwd)
# use m.list() to get all the mailboxes, "INBOX" to get only inbox
m.select("INBOX")
resp, items = m.search(None, '(UNSEEN)') # you could filter using the IMAP rules here (check http://www.example-code.com/csharp/imap-search-critera.asp)
items = items[0].split() # getting the mails id

for emailid in items:
    # getting the mail content
    resp, data = m.fetch(emailid, '(UID BODY[TEXT])')
    text = str(data[0][1])
    soup = bs(text)

HTML部分全体に「bs」を使用するにはどうすればよいですか? または、メール本文から HTML テーブルを解析する他の方法はありますか?

特定のキーワードを含む特定の HTML 本文を検索したいので、「bs」が最適なようです。「bs」検索は、テーブル全体を取得し、その中で反復処理を行うことができます。

4

1 に答える 1

4

どうやら、間違ったパーサーを使用したようです。

「lxml」パーサーに変更すると、問題なく機能しました。

次の行を変更する必要があります。

soup = bs(text,"lxml");
于 2013-08-11T09:04:03.367 に答える