嗨我在从特定网站下载和阅读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二进制编码,如果是,我如何正确解码?。
感谢您的回复。
答案 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()