【发布时间】:2015-07-29 10:29:57
【问题描述】:
我正在使用feedparser 来获取 RSS 提要数据。对于大多数工作正常的 RSS 提要。但是,我知道偶然发现了一个获取 RSS 提要失败的网站 (example feed)。返回结果不包含预期的键,值是一些 HTML 代码。
我尝试使用 urllib2.Request(url) 简单地读取提要 URL。这将失败并出现HTTP Error 405: Not Allowed 错误。如果我添加一个自定义标题,例如
headers = {
'Content-type' : 'text/xml',
'User-Agent': 'Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0',
}
request = urllib2.Request(url)
我不再收到 405 错误,但返回的内容是一个带有一些 HEAD 标记和一个基本上为空的 BODY 的 HTML 文档。在浏览器中一切看起来都很好,当我查看“查看页面源代码”时也是如此。 feedparser.parse 也允许设置agent 和request_headers,我尝试了各种代理。我仍然无法正确读取 XML,更不用说来自 feedparse 的解析提要了。
我在这里错过了什么?
【问题讨论】:
-
@JulienGenestoux:原来是通过 Javascript 动态创建 RSS 提要——这是我第一次遇到这种情况。你的系统能处理这个吗。我目前有一种使用 PhantomJS 的工作解决方案。基于此,我可能会尽快提供答案。
-
不,他们不通过 JS 生成提要 :)(我什至不确定这是否可能!)。请参阅下面的答案......是的,Superfeedr 能够很好地处理这个问题!
标签: python rss urllib2 feed feedparser