如何克服python feedparser模块中不匹配的标签错误

时间:2019-01-29 16:26:28

标签: python xml feedparser

我正在使用python feedparse.py模块版本5.2.1。尝试读取usnews的供稿,例如https://www.usnews.com/rss/the-report。我得到带有rss 2.0标头的xml文件

feedparser返回'状态':403,'编码':'us-ascii','bozo_exception':SAXParseException('mismatched tag',),'version':

状态403似乎是请求错误,但提供的异常是解析器错误。我想知道是否有解决此错误的方法(例如更改解析器的“严格性”

谢谢

import feedparser
f = feedparser.parse('https://www.usnews.com/rss/news/the-run-2016',
                 agent='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36')

以上是显示错误的最简单示例。我已经在生产应用程序中使用feedparser.py数月了,这只是示例和usnews.com上的所有提要,其中遇到了错误。感谢您的浏览。

错误显示如下:

{'feed': {}, 'entries': [], 'bozo': 1, 'headers': {'Server': 'AkamaiGHost', 'Mime-Version': '1.0', 'Content-Type': 'text/html', 'Content-Length': '301', 'Expires': 'Tue, 29 Jan 2019 17:10:37 GMT', 'Date': 'Tue, 29 Jan 2019 17:10:37 GMT', 'Connection': 'close', 'X-Origin': 'AWS-Brightspot', 'Set-Cookie': 'akacd_www=2177452799~rv=31~id=6f8f4ecea09b9abd4835d9ddd7c87ac8; path=/; Expires=Mon, 31 Dec 2038 23:59:59 GMT'}, 'href': 'https://www.usnews.com/rss/news/the-run-2016', 'status': 403, 'encoding': 'us-ascii', 'bozo_exception': SAXParseException('mismatched tag',), 'version': '', 'namespaces': {}}

新闻---

此外,我的浏览器会快速解析xml。

1 个答案:

答案 0 :(得分:0)

没有深入研究此处实际发生的情况(这很可能是feedparser问题或返回的编码问题),因此在feedparser实例中包含agent是这里的罪魁祸首。使用:

import feedparser
f = feedparser.parse('https://www.usnews.com/rss/news/the-run-2016')

似乎可以在此处缓解您的问题。至于原因,那还需要更多的研究。