Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从电子邮件正文解析HTML-Python_Python_Html_Email_Beautifulsoup_Email Parsing - Fatal编程技术网

如何从电子邮件正文解析HTML-Python

如何从电子邮件正文解析HTML-Python,python,html,email,beautifulsoup,email-parsing,Python,Html,Email,Beautifulsoup,Email Parsing,我正在尝试用python解析传入的电子邮件。 我收到的电子邮件部分是文本部分是HTML。 我想得到HTML部分并在HTML中找到一个表 我试过使用beatifulsoup。但在尝试下一个代码时,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 m

我正在尝试用python解析传入的电子邮件。 我收到的电子邮件部分是文本部分是HTML。 我想得到HTML部分并在HTML中找到一个表

我试过使用beatifulsoup。但在尝试下一个代码时,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表


“bs”似乎最适合我,因为我想找到一个包含特定关键字的特定HTML正文,“bs”搜索可以检索整个表并让我在其中进行迭代。

显然,我使用了错误的解析器

一旦我转换成“lxml”解析器,它就工作得很好

需要更改下一行:

soup = bs(text,"lxml");

查看文本变量。如果您没有为BeautifulSoup提供HTML字符串,那么您就不能期望得到合理的结果。垃圾输入,垃圾输出。我知道如果我给BS部分文本和部分HTML,解析它很困难,但我的问题是如何只提取HTML部分。我尝试搜索第一个html标记,并将字符串剪切到那里。我尝试只提取“text/html”部分。在这两种情况下,它只解析html的第一部分,而不是全部html。显然,我使用了错误的解析器。一旦我改成了“lxml”解析器,它就工作得很好。也许你应该把这个解决方案作为你自己问题的答案,作为将来其他人的参考。