前提・実現したいこと
python3のurllibを使ってgoogle画像の保存
発生している問題・エラーメッセージ
フォルダは作られるが, 画像が保存されていない.
実行した結果, 以下のような出力のみでした.
エラーが0件中、0件発生しました。
エラーが0件中、0件発生しました。
エラーが0件中、0件発生しました。
エラーが0件中、0件発生しました。
エラーが0件中、0件発生しました。
import cv2, os, re,requests, time, bs4 from urllib.request import urlretrieve from urllib import request as req from urllib import error,parse from PIL import Image import numpy as np import glob members = ["(具体的な名前)","(具体的な名前)","(具体的な名前)","(具体的な名前)","(具体的な名前)"] img_dir = "./Pictures/" for member in members: dir_path = img_dir + member if not os.path.exists(dir_path): os.makedirs(dir_path) urlKeyword = parse.quote(member) url = 'https://www.google.com/search?hl=jp&q=' + urlKeyword + '&btnG=Google+Search&tbs=0&safe=off&tbm=isch' headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0",} request = req.Request(url=url, headers=headers) page = req.urlopen(request) html = page.read().decode('utf-8') html = bs4.BeautifulSoup(html, "html.parser") elems = html.select('.rg_meta.notranslate') counter = 0 error_counter = 0 for ele in elems: ele = ele.contents[0].replace('"','').split(',') eledict = dict() for e in ele: num = e.find(':') eledict[e[0:num]] = e[num+1:] imageURL = eledict['ou'] try: file_path = dir_path + "/" + str(counter)+".jpg" urlretrieve(imageURL, file_path) counter += 1 except Exception as e: error_counter += 1 if counter == 1: print(member+"のダウンロードを開始します") if counter==200: break print("エラーが{}件中、{}件発生しました。".format(counter, error_counter))
試したこと
urlは無事に生成されているようですが,
調べたところelemsの要素が空のようでした.10~20行目に原因があるかと思いますが, わかりません.
headerは参考にしたサイトのままにしたのですが使用しているOSによって変わったりするものなのでしょうか.
補足情報(FW/ツールのバージョンなど)
macOS 10.13.6
jupyter notebook python3