2017-06-06 13 views
0

freemidi.orgからmidiファイルをダウンロードするPythonクローラーを作成しました。 Chromeのリクエストヘッダーを見ると、ダウンロードページがhttps://freemidi.org/getter-20225(後で「getter-20225」と呼びます)の順番で「Referer」属性がhttps://freemidi.org/download-20225(後で「download-20225」と呼びます)でなければならないことがわかりましたmidiファイルを適切にダウンロードしてください。私はChromeで閲覧していた、と私はこのコード行を使用してファイルをダウンロードしようとしたリクエストヘッダとまったく同じだったPythonクローラーが正しく動作しません

headers = { 
    'Referer': 'https://freemidi.org/download-20225', 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" 
} 

:私はこのようなヘッダを設定し、Pythonでそうしました。

midi = requests.get(url, headers=headers).content 

ただし、正しく動作しませんでした。 midiファイルをダウンロードする代わりに、サイト「download-20225」のhtmlファイルをダウンロードしました。私は、後で "getter-20225"というサイトに直接アクセスしようとすると、 "download-20225"にも私がかかってしまうことがわかりました。ヘッダーが間違っていると思われるので、ダウンロードを開始するのではなく、別のWebサイトに移動しました。

私はPythonクローラを書くのがとても新しくなっています。

答えて

1

midiファイルのページ(例:「getter-20225」)は、曲をダウンロードした後、曲のページにリダイレクトしたいと考えています(「download-20225」など)。ただし、要求はリダイレクトの最後のページからのコンテンツのみを返します。

あなたが要求を持っているFalseにallow_redirectsパラメータを設定することができますが、「ゲッター」ページ(つまりMIDIファイル)からコンテンツを返す:あなたがしたい場合は、ディスクへのMIDIファイルを書き込むようにすることを

midi = requests.get(url, headers=headers, allow_redirects=False) 

注意ターゲットファイルをバイナリモードで開く必要があります(midiファイルはバイト単位で記述されるため)。

with open('example.mid', 'wb') as ex: 
    ex.write(midi.content) 
関連する問題