2017-12-20 10 views
0

웹 사이트 here (SECI 웹 사이트 링크)에서 "SEC Investment Adviser Report"버튼을 클릭하면 gzip에서 XML 파일을 추출하려고합니다. 아래는 내 (최소) 코드입니다. 내 요청에 따라 gzip.open().text 또는 .content을 제공하는지에 따라 "내장 된 null 문자"또는 "내장 된 null 바이트"를 계속 가져옵니다. 누구든지 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 ") - 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]) 
관련 문제