2017-12-07 3 views
-1

.gzファイルを正しくダウンロードするにはどうすればよいですか?私のコードは次の行く:リクエストモジュール付き.gzファイルをダウンロードできません

import requests 
response = requests.get('https://www.propertyshark.com/sitemap/CA-San-Bernardino-reports_1.xml.gz', headers=headers) 
    print(response.status_code) 
    if response.status_code == 200: 
     print('Downloading...') 
     file_name = 'file.xml.gz' 

それはGZファイルをダウンロードし、それが破損していない - だけ1KB大きさで、私はそれがファイル名に.gz.cpgzを追加解凍しようとします。

答えて

1

あなたのコードを実行しようとしましたが、次のエラーページがあります。あなたは、ヘッドレスクロムのようなヘッドレスブラウザをセレンを介して操作する必要があるようです。 Requestsモジュールは、このエラーページに記載されているBotの状態に適用されます。そのような場合、私は手動でダウンロードする場合

import requests 

res = requests.get("https://www.propertyshark.com/sitemap/CA-San-Bernardino-reports_1.xml.gz") 
print(res.text) 

enter image description here

2

.gzファイルは、実際にはHTMLページであるため、.gzファイルをJavaScriptを使用してダウンロードするため、正しい.gzファイルを取得できません。それは空白のページを作成するので、そこにホストされている生のファイルのように見えますが、実際にはそれが好きではありません。

これを確認するには、ページを開いて要素を調べます。これは、サイトがいくつかのミドルウェアを使用してフロントエンドで.gzファイルを生成する場合には、簡単に可能です。

サイトの開発者に連絡することができれば、カスタムパスが開かれます。それ以外の場合は、セレンでURLを開いてから自動的にダウンロードする必要があります。

明示的にその名前を指定した場合にのみ、コードが.gzファイルとして保存されます(file_name = 'file.xml.gz')。 FWIW、Linuxでは、ある拡張機能のファイル名を別の拡張機能に簡単に変更できます。

+0

うーんしかし、それがダウンロードされますか? – Volatil3

+0

@ Volatil3あなたはブラウザで手動でダウンロードしています。ブラウザは明らかにJavaScriptを実行して、あなたのために無意識のうちにダウンロードできます。プログラムでアセットを直接ダウンロードできるかどうかを簡単に確認するには、 'wget 'を使用して405をスローします。 –

+0

@ Volatil3ねえ、これを解決できましたか? –

関連する問題