2017-12-20 17 views
0

ウェブサイトhere(SECIウェブサイトへのリンクを参照)の「SEC投資アドバイザーレポート」ボタンをクリックしてgzipからXMLファイルを抽出しようとしています。以下は私の(最小)コードです。私は、私の要求からgzip.open().textまたは.contentを供給するかどうかに応じて、「埋め込みヌル文字」または「埋め込みヌルバイト」を引き続き取得します。誰も私がXMLにアクセスできるように、このファイルをロードするのを助けることができますか?gzipフォルダからファイルを抽出する

import requests 
import gzip 

file = gzip.open(requests.get(r'https://www.adviserinfo.sec.gov/IAPD/Content/BulkFeed/CompilationDownload.aspx?FeedPK=39545&FeedType=IA_FIRM_SEC').text,'rt') 
+1

[ 'gzip.open'](https://docs.python.org/3/library/gzip.html #gzip.open)はファイル名をとります。また、そのリンクからのIA_FIRM_SEC_Feed_12_20_2017.xml.gzは、有効なgzipアーカイブではないようです。 HTMLが追加されています。 – Galen

+0

[gzip.decompress](https://docs.python.org/3/library/gzip.html#gzip.decompress)を使用できます。しかし、追加されたHTMLに関する私のコメントに注意してください。 'gzip.decompress(request.content [:request.content.find(b" \ r \ n \ r \ n <!DOCTYPE html> ") - 1])' – Galen

答えて

3

gzip.openは、圧縮されたデータではなく、ファイル名をとります。 gzip.decompressを使用できます。

質問のアーカイブは不正な形式です。特に、何らかの理由でHTMLが追加されています。

のみHTMLの開始前にコンテンツを利用することにより、次の作品:

import requests 
import gzip 

request = requests.get(r'https://www.adviserinfo.sec.gov/IAPD/Content/BulkFeed/CompilationDownload.aspx?FeedPK=39545&FeedType=IA_FIRM_SEC') 

xml = gzip.decompress(request.content[:request.content.find(b"\r\n\r\n<!DOCTYPE html>") - 1]) 
関連する問題