2012-12-20 56 views
0

您好我有一個問題,下載和閱讀從一個特定的網站rss飼料,這個問題似乎是由此產生的下載rss飼料看起來是二進制格式,任何人都可以告訴我怎麼才能把這個回到可讀的格式,然後我可以發送到美麗的湯解析?如何解析一個二進制編碼rss飼料

這裏是我到目前爲止的代碼: -

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源二進制編碼,如果是的話,我如何正確解碼它?

感謝您的回覆。

回答

1

該服務器通過gzip服務器進行高效下載;它有一個Content-Encoding: gzip標題集。

使用feedparser下載並解析它,而不是使用urllib2和BeautifulSoup。

如果你必須使用urllib2,還可以使用gzip模塊的內容先解壓縮:

import gzip 
from cStringIO import StringIO 

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

非常感謝您的快速回復,我將在明天早上看看這第一件事並報告。 – Paul