2011-01-22 30 views
1

とファイル私はこのスレッドで説明したようにurllibは使用してWebサイトからファイルをダウンロードしようとしています:link textダウンロードPythonのurllibは、urllib2の

import urllib 
urllib.urlretrieve ("http://www.example.com/songs/mp3.mp3", "mp3.mp3") 

私はファイル(主にPDFファイル)をダウンロードすることですが、私が得るすべて開くことができない破損したファイルです。私はそれがウェブサイトがログインを必要とするためだと思う。

クッキーを処理するために上記の機能をどのように変更できますか?私は既にユーザ名&のパスワード情報を持っているフォームフィールドの名前を知っています。

a, b = urllib.urlretrieve ("http://www.example.com/songs/mp3.mp3", "mp3.mp3") 
print a, b 

>> **cache-control:** no-cache, no-store, must-revalidate, s-maxage=300, proxy-revalida 
te 

>> **connection:** close 

私は、ブラウザでそのURLを入力する場合は、手動でファイルをダウンロードすることができる午前:私はurlretrieveの戻り値を印刷するとき、私はのようなメッセージを取得します。ありがとう

+0

から始まりますが、ページは、あなたが拡張+合格したファイル名で保存されます。 'mp3.mp3'の名前を' mp3.html'のように変更して、それをWebブラウザで開きます。 - これは、ログイン要求を確認するためにjsutです – ccheneson

+1

リクエストライブラリを見てください。 urllib2を使わなければならない場合を除いて、何もしませんが、すべてを複雑にします。 http://pypi.python.org/pypi/requests –

答えて

0

要求しているサーバーがUser-Agentなどの特定のヘッダーメッセージを探している可能性があります。追加のヘッダーを送信して、ブラウザの動作を模倣してみてください。

+0

ありがとうございますccheneson&rubayeet!それは私の間違いだった - ブラウザがログインページにリダイレクトするファイル名にいくつかのエラーがあった。私は今すぐmechanizeを使ってダウンロードできます:file.write(browser.response()。read()):) – iab

1

最初にurllib2はクッキーをサポートしています。クッキーの取り扱いは簡単で、2番目にダウンロードしたファイルの種類を確認できます。例えば。私の知る限り、すべてのmp3は、ウェブサイトは、あなたがログインページにリダイレクトする必要がありますログインが必要な場合はバイト「ID3」

import cookielib, urllib2 
cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
r = opener.open("http://example.com/") 
関連する問題