2016-05-11 20 views
0

Google Books APIからブックカバー画像をダウンロードしようとしています。それは私にこのようなリンクを与えて終わる:画像ファイルをダウンロードしようとしていて、「画像が利用できません」というファイルを取得し続けています

http://books.google.com/books/content?id=Tum3dwFzSngC&printsec=frontcover&img=1

あなたがそれをクリックすると、あなたはそれをロードし、そこで見ることができます。

import requests 
r = requests.get('http://books.google.com/books/content?id=Tum3dwFzSngC&printsec=frontcover&img=1') 
with open('test.jpeg', "wb") as f:  
    f.write(r.content) 
    f.close() 

しかし、私はこのから取得する画像は、いつも私が仮定している「画像はありませんが、」ちょうどから来ていると言うだけで9キロバイトのファイルです:それでは、私は、画像をダウンロードするには、このコードを使用します要求されたイメージが存在しない場合のAPI。私はここで何か間違っていますか?それはかなり標準的でシンプルなので、何が間違っているかわかりません。

答えて

1

サーバーからリクエストがブラウザから送信されていないと見なされるため、サーバーは応答したくありません - 一般的な方法です。たとえば、Chromeで画像を開き、ChromeからCURLリクエストとして送信されたリクエストをコピーして機能させました。簡単に送信:

curl 'http://books.google.com/books/content?id=Tum3dwFzSngC&printsec=frontcover&img=1' 

サーバーがユーザーエージェントをチェックしています。有効なものが見つからない場合、画像は送信されません。 easily fake a user agent、またはMechanizeのようなものを使用してブラウザをエミュレートすることができます。 img.jpgへの応答を保存しCURLリクエストの簡単な例を示します。

curl 'http://books.google.com/books/content?id=Tum3dwFzSngC&printsec=frontcover&img=1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36' >> img.jpg 
+0

私が要求にユーザーエージェントを追加し、それはまだ同じ「利用できない」ファイルをダウンロードしました。 –

+0

私が含むCURLリクエストを試しましたか?それは非常に基本的な要求であり、動作します。ユーザーエージェントが正しく追加されていますか? UAの定義に使用されたコードであなたの投稿を更新できますか? –

+0

私はこれを使用しました: 'header = {'User-Agent': 'Mozilla/5.0(Windows NT 6.2; Win64; x64)AppleWebKit/537.36(GeckoのようなKHTML)Chrome/32.0.1667.0 Safari/537.36'} r = requests.get( 'http://books.google.com/books/content?id=Tum3dwFzSngC&printsec=frontcover&img=1'、ヘッダー=ヘッダー) ' と私はカールを試しても、画像。 –

関連する問題