20790


PythonでBing画像検索した画像を自分のPCに保存したいのですが9割以上が空のファイルになってしまいます。  
どのように対処したら良いのでしょうか?また、原因は何なのか詳しい方教えて下さいませんか?  
よろしくお願いします。

<http://o-tomox.hatenablog.com/entry/2013/09/25/191506>  
のページを参考にアカウントを作ってキーを取得、  
<http://ykicisk.hatenablog.com/entry/2015/02/15/124841>  
のページのコードをapi_key="hogehoge"の部分を自分のキーに書き換え、

[code]

    python collect_images.py -q 検索ワード -o "C:/Users/hogehoge"
    
[/code]

として実行したのですが、

[code]

    URLError
    url:http://www.hogehoge.jp/img.jpg
    
[/code]

のようになり、0バイトのjpg,pngなどの画像ファイルがたくさん出力され、中身のあるファイルは1割以下です。

****追記****  
バージョンは2.7の64bitでOSはWin7です。Anacondaで入れたものです。

****追記2****

[code]

    proxy_dict =  {"http":"your.proxy:8080"}
    proxy = urllib2.ProxyHandler(proxy_dict)
    opener = urllib2.build_opener(proxy)
    urllib2.install_opener(opener)
    
[/code]

をコメントアウトし、

[code]

    response = requests.get(url,
                            auth=(api_key, api_key), 
                            headers={'User-Agent': 'My API Robot'})#,
                            #proxies=proxy_dict)
    
[/code]

として実行したところ、今まで100枚でやっていた（そのうち回収できたのは3,4枚?）ところ10枚に減らしたというところもあるのですが、10枚中5枚回収できました。  
エラーのところは

[code]

    url:http://images6.fanpop.com/image/hogehoge.jpg
    Forbidden
    
[/code]

のようになりました。


CC BY-SA 3.0
2016-01-09T09:57:50.417
20779
2016-01-11T07:46:19.643
2016-01-11T07:46:19.643
12457
12457
question
python web-scraping
Pythonで検索エンジンから画像スクレイピング


`URLError` が表示されていることから、ネットワーク通信時の何らかのエラーであると考えられます。

[参考にしたコード](http://ykicisk.hatenablog.com/entry/2015/02/15/124841)
を見ると出力用ファイルを開いたあとにネットワーク通信を行っているため、エラー発生時にもファイルが生成されてしまい0バイトの画像ファイルがたくさん出力されているのでしょう。

`URLError`
の表示と一緒に表示されているURLが正しい画像ファイルを返しているかどうかをcurlコマンドやブラウザにコピペして表示してみる等々確認してみてください。

それと、参考コードのエラー表示部分：

[code]

    except urllib2.URLError:
        print("URLError")
    
[/code]

ここを

[code]

    except urllib2.URLError, e:
        print(e.reason)
    
[/code]

に書き換えて再度実行してみたらどのような結果になるでしょうか？

また、利用しているPythonのバージョンやOSなど実行環境が追記してあると、より良い回答が得やすくなると思います。


CC BY-SA 3.0
2016-01-09T17:07:24.430
20790
2016-01-09T17:07:24.430
2391
20779
answer