0

こんにちは、特定のサイトからの 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フィードはバイナリエンコードされていますか?もしそうなら、どうすれば正しくデコードできますか?.

返信ありがとうございます。

4

1 に答える 1

1

フィードは効率的なダウンロードのためにサーバーによって gzip されます。Content-Encoding: gzipヘッダーセットがあります。

BeautifulSoupを使用feedparserする代わりに、ダウンロードして解析するために使用します。urllib2

を使用する必要がある場合はurllib2gzipモジュールを使用して最初にコンテンツを解凍します。

import gzip
from cStringIO import StringIO

rss_feed = gzip.GzipFile(fileobj=StringIO(rss_feed)).read()
于 2012-12-20T22:13:12.993 に答える