如何解析二进制编码的rss feed

时间:2012-12-20 22:09:41

标签: python rss urllib2 binary-data

嗨我在从特定网站下载和阅读RSS订阅源时出现问题,问题似乎是由此产生的下载的rss Feed看起来是二进制格式的,任何人都可以告诉我如何将其恢复到一种可读的格式,然后我可以发送到漂亮的汤进行解析?。

到目前为止,这是我的代码: -

import urllib2
from BeautifulSoup import BeautifulSoup

rss_feed = urllib2.urlopen("http://kat.ph/usearch/ubuntu/?rss=1", timeout=5.0).read()
print rss_feed #will display binary not expected xml
rss_feed_soup = BeautifulSoup(rss_feed)

所以只是为了澄清我在尝试使用urllib2读取时似乎无法获得生成的xml,如果我在任何现代Web浏览器中查看rss提要,rss正确显示,我在这里缺少什么? ,rss feed二进制编码,如果是,我如何正确解码?。

感谢您的回复。

1 个答案:

答案 0 :(得分:1)

服务器对提要进行了压缩以便有效下载;它有一个Content-Encoding: gzip标题集。

使用feedparser下载并解析它,而不是使用urllib2和BeautifulSoup。

如果您必须使用urllib2,请先使用gzip模块解压缩内容:

import gzip
from cStringIO import StringIO

rss_feed = gzip.GzipFile(fileobj=StringIO(rss_feed)).read()