Python Feedparser未正确解析电子邮件正文

Python Feedparser未正确解析电子邮件正文,python,parsing,flask,rss,feedparser,Python,Parsing,Flask,Rss,Feedparser,我正在尝试使用feedparser作为原始文本提要来解析下面的内容(来自gmail邮件正文)。我将在一个页面上显示它,所以我希望它看起来像在电子邮件正文中一样,并使用feedparser来帮助清理内容 来自GMail的原始电子邮件正文,其中每个测试(如testing1、testing2等)都在一个新行上: <div dir="ltr">testing1<div>testing2</div><div>testing3</di

我正在尝试使用feedparser作为原始文本提要来解析下面的内容(来自gmail邮件正文)。我将在一个页面上显示它,所以我希望它看起来像在电子邮件正文中一样,并使用feedparser来帮助清理内容

来自GMail的原始电子邮件正文,其中每个测试(如testing1、testing2等)都在一个新行上:

<div dir="ltr">testing1<div>testing2</div><div>testing3</div><div>testing4</div><div>testing5</div><div>testing6</div><div>  testing1<div>testing2</div><div>testing3</div><div>testing4</div><div>testing5</div><d
iv>testing6</div><div>  testing1<div>testing2</div><div>testing3</div><div>testing4</div><div>testing5</div><div>testing6</div></div><div>  testing1<div>testing2</div><div>testing3</div><div>testing4</div><div>t
esting5</div><div>testing6</div></div><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Bob Johnson<br>(123) 456-7890</div></div></div></div>
testing1testing2testing3testing4testing6testing2testing2testing4testing2testing2testing3testing4testing2testing2testing4testing2testing2testing2testing2testing2testing2testing4testing4testing4testing2testing2testing4testing4testing4testing2testing2testing2testing2testing4t
测试(123)456-7890
然后我将其输入RSS提要,如下所示:

<rss version="2.0">
                    <channel>
                    <title>Created Feed</title>
                    <item><title>test2</title>
                            <pubDate>Sun, 23 May 2021 21:38:03 -0400</pubDate>
                            <link>elysiumreader+yac41zdxipljzcfl@gmail.comSun23May20212138030400</link>
                            <content><div dir="ltr">testing1<div>testing2</div><div>testing3</div><div>testing4</div><div>testing5</div><div>testing6</div><div>  testing1<div>testing2</div><div>testing3</div><div>testing4</div><div>testing5</div><d
iv>testing6</div><div>  testing1<div>testing2</div><div>testing3</div><div>testing4</div><div>testing5</div><div>testing6</div></div><div>  testing1<div>testing2</div><div>testing3</div><div>testing4</div><div>t
esting5</div><div>testing6</div></div><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Bob Johnson<br>(123) 456-7890</div></div></div></div>
</content>
</channel>
</rss>

创建的提要
测试2
太阳,2021年5月23日21:38:03-0400
极乐世界阅读器+yac41zdxipljzcfl@gmail.comSun23May20212138030400
测试测试测试测试测试测试测试测试测试测试
测试(123)456-7890
这最终会像下面这样被解析,在这里它丢失了两行之间的换行符,最后它看起来像是
标记将其抛出,并正确地停止解析

{'title': 'test2', 'title_detail': {'type': 'text/plain', 'language': None, 'base': '', 'value': 'test2'}, 'published': 'Sun, 23 May 2021 21:38:03 -0400', 'published_parsed': time.struct_time(tm_year=2021, tm_mo
n=5, tm_mday=24, tm_hour=1, tm_min=38, tm_sec=3, tm_wday=0, tm_yday=144, tm_isdst=0), 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'www.test.com/blablabla'}
], 'link': 'www.test.com/blablabla', 'content': [{'type': 'application/xhtml+xml', 'language': None, 'base': '', 'value': 'testing1testing2testing3testing4testing5testing6
\xa0 testing1testing2testing3testing4testing5testing6\xa0 testing1testing2testing3testing4testing5testing6\xa0 testing1testing2testing3testing4testing5testing6<br /></div>-- <br /><div class="gmail_signature" di
r="ltr"><div dir="ltr">Bob Johnson<br />(123) 456-7890</div></div></div></div>'}], 'summary': 'testing1testing2testing3testing4testing5testing6\xa0 testing1testing2testing3testing4testing5testing6\xa0 testing1tes
ting2testing3testing4testing5testing6\xa0 testing1testing2testing3testing4testing5testing6<br /></div>-- <br /><div class="gmail_signature" dir="ltr"><div dir="ltr">Bob Johnson<br />(123) 456-7890</div></div></div></div>'}
{'title':'test2','title_detail':{'type':'text/plain','language':None',base':'','value':'test2'},'published':'Sun,2021年5月23日21:38:03-0400','published_parsed':time.struct_time(tm_year=2021,tm_mo
n=5,tm_-mday=24,tm_-hour=1,tm_-min=38,tm_-sec=3,tm_-wday=0,tm_-yday=144,tm_-isdst=0),'links':[{'rel':'alternate','type':'text/html','href':'www.test com/blablablabla'}
],'link':'www.test.com/blabla','content':[{'type':'application/xhtml+xml','language':无,'base':'value':'testing1testing2testing3testing4testing5testing6
\xa0测试1测试2测试4测试6\xa0测试1测试2测试4测试6\xa0测试1测试2测试4测试6\xa0测试2测试4测试5测试
--
Bob Johnson
(123)456-7890',“摘要”:“测试1测试2测试4测试6\xa0测试2测试2测试4测试6\xa0 ting2testing3testing4testing5testing6\xa0 testing1testing2testing3testing4testing5testing6
--
Bob Johnson
(123)456-7890'}

如有任何想法或想法,将不胜感激。谢谢

RSS基本上是一个XML文档,所以它必须遵循相当严格的规则。你从Gmail中提取的HTML标记正在破坏RSS文档。如果希望提要包含HTML标记,则在将内容添加到RSS提要之前,需要在节中添加或包装内容

要使用标准库对HTML实体进行编码,请执行以下操作:

>>从html导入转义
>>>转义('testing1testing2')
'div dir=“ltr”testing1divtesting2'
对于CDATA:

>>body='testing1testing2'
>>>印刷品(f“)
测试1测试2]>

这两个选项都只会影响标记,即使它看起来很吓人,它也会正确地显示给最终用户。

使用CDATA,效果很好。非常感谢。我会在12小时内批准给你赏金的