前提・実現したいこと
Pythonを使った画像検索・ダウンロードプログラムを作っています。
動作は出来ていますが、手動で検索した時と違う画像がダウンロードされて困っています。
始めたばかりでおかしな内容かもしれませんが、大目に見てください。
簡単な動作まとめ
①単語入力
②ダウンロード枚数
③bing画像検索ページで検索
④結果から画像URL取得
⑤ダウンロード
発生している問題・エラーメッセージ
例えば、"ハリネズミ" と入力します。
手動でbing画像検索すると、1番にあおむけになったハリネズミが出てきますが
プログラムを実行すると、授乳しているハリネズミがダウンロードされます。
手動とプログラムでは、検索結果が異なる場合があると解説されていたサイトをいくつか見ましたが
プログラムでもまれに手動の検索結果と同じ画像をダウンロードしてくれる時があります。
出来ないなら出来ないで諦めがつきますが、何かきっかけがあって正常に動作するのであれば
そうしたいです。
ちなみに、プログラム中で"犬"と検索するとイノシシの年賀状画像が出てきます。これは本当に困ります。
よろしくお願いします。
該当のソースコード
Python
1import requests 2import urllib.request 3from bs4 import BeautifulSoup 4import time 5 6word = input("検索する言葉を入力してください。") 7num =int(input("ダウンロードする数を入力してください。")) 8 9#Bing画像検索サイト 10url = "https://www.bing.com/?scope=images&FORM=Z9LH1" 11 12#入力した言葉を検索 13req = requests.get(url, params={"q":word}) 14 15res_url = str(req.url) 16 17print(res_url) 18print("\n------------------\n") 19 20 21html = urllib.request.urlopen(res_url) 22 23#BS4で読み取れる状態に変更 24soup = BeautifulSoup(html,"html.parser") 25 26#print(soup) 27print("\n------------------\n") 28elems = soup.select(".thumb") 29 30#print(elems) 31 32i = int(1) 33 34for elem in elems: 35 imgurl = elem.get("href") 36 37 url = str(imgurl) 38 39 file_name = "{0}{1}.jpg".format(word,i) 40 print(file_name) 41 42 print("Now Downloading...{0}/{1}".format(i,num)) 43 44 try: 45 #画像をダウンロード 46 urllib.request.urlretrieve(url,file_name) 47 except: 48 print("読み取れない画像でした。") 49 else: 50 i = i + 1 51 finally: 52 time.sleep(1) 53 if i > num: 54 break 55 56print("End")
試したこと
手動で検索した画像がダウンロードできたとき、出来ない時でURLを比べてみましたが
内容は同じでした。
HTMLの内容も見比べてみましたが、検索するごとに変化すると思われる項目(GI,CurURL?)などしか
変化が見られず、画像内容など検索結果が書かれたところから内容が変わっています。
上記内で検証した後の出力動作が残っています。すみません。
補足情報(FW/ツールのバージョンなど)
Windows10
Python3.7.1
Anaconda3
回答2件
あなたの回答
tips
プレビュー