我创建了一个脚本,每周解析电子邮件,查找特定电子邮件中的表格。我知道我想要具有特定类名的表标记内的内容。然后的目标是获取这些表格,本质上将它们与中间的
标签连接起来,并放入另一封电子邮件中以每周自动发送。
到目前为止,我所掌握的是实际的电子邮件抓取、最后发送的电子邮件,但我只是不知道如何将 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 结构,这样我就可以将它们弹出到新电子邮件中并按原样发送。下面的解决方案适合我,因此我将其标记为已接受的答案。
感谢您的帮助!
最佳答案
soup.find_all 的输出列表中的元素是 bs4.element.Tag 对象,而不是可以按原样连接在一起形成字符串的某些对象。
我不确定你在做什么,但如果你想让它们全部成为一个str
,你可以迭代Tag
,调用str
对它们进行获取字符串表示,然后 join
:
'<br/>'.join([str(tag) for tag in table])
关于python - 将 Beautiful Soup find_all 列表合并为一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51754581/