我创建了一个脚本,该脚本每周解析一次电子邮件,以查找特定电子邮件中的表格。我知道我想要带有特定类名的表标记中的内容。然后的目标是获取这些表,基本上在它们之间用
标记合并它们,并放入另一封电子邮件中,以每周自动发送一次。
到目前为止,我实际是实际的电子邮件抓取,最后是电子邮件的发送,但是我只是不知道如何将find_all的结果组合到一个元素中。我显然对不同的方法持开放态度,这就是为什么我提出这样的问题。
我需要的代码是:
def parse_messages(enhance_str):
soup = BeautifulSoup(enhance_str, 'html.parser')
table = soup.find_all('table', {'class': 'MsoNormalTable'})
return table
这给了我一个类似列表的对象(我知道find_all子类列表),但是我知道的任何列表方法都不适用于该对象。我以为我可以做类似的事情
'<br/>'.join(table)
但这会引发属性错误。
我肯定有一个简单的答案,但我看不到。任何帮助是极大的赞赏。
编辑:为澄清起见,我只是试图保留这些表的html结构,因此我可以将它们弹出到新的电子邮件中并按原样发送。以下解决方案适用于我,因此将其标记为可接受的答案。
感谢您的帮助!
答案 0 :(得分:1)
soup.find_all
的输出列表中的元素是bs4.element.Tag
个对象,不是可以按原样连接在一起以创建字符串的某些对象。
我不确定您要做什么,但是如果您想使它们全部成为一个str
,则可以遍历Tag
,在它们上调用str
获取字符串表示形式,然后获取join
:
'<br/>'.join([str(tag) for tag in table])