私はpython経験半年の者です。
ポケモンの画像を1000枚、Googleからスクレイピングしようと以下のコードを作りました。
しかし、実際に以下のコードを実行してみるとWeb上の1〜20番目の画像だけが50回分スクレイピングされてしまいました。
import requests from bs4 import BeautifulSoup import lxml import urllib.request import os import ssl ssl._create_default_https_context = ssl._create_unverified_context # https://shinespark.hatenablog.com/entry/2015/12/06/100000 # PEP 0476に従い、Python2.7.9以降はSSL証明書が正しくない場合にはデフォルトでSSL認証エラーを出すようになった模様。 for num in range(50): # rangeで画像の量を選択:50×20=1000枚 headers = {"User-Agent":"hoge"} URL = 'https://www.google.com/search?q=%E3%83%9D%E3%82%B1%E3%83%A2%E3%83%B3+%E9%9B%86%E5%90%88&source=lnms&tbm=isch&sa=X&ved=0ahUKEwi1lLGP_7XkAhXKGaYKHXNJBHgQ_AUIEigB&biw=1280&bih=720' # URLは画像検索したトップのURLをコピペする resp = requests.get(URL, timeout=1, headers=headers) soup = BeautifulSoup(resp.text, "lxml") imgs = soup.find_all("img") for i in range(len(imgs)): x = "pokemon" #↑ディレクトリ名はその都度変更するように! dir_name = "./data/{0}".format(x) if not os.path.exists(dir_name): os.makedirs(dir_name) filepath = dir_name + "/{0}-{1}.jpg".format(num,i) urllib.request.urlretrieve(imgs[i]["src"],filepath) #実行方法:python download2.py
エラーは出ませんでした。
Web上の画像1〜1000番目までをスクレイピングするにはどうしたらよいでしょうか?
コメントアウト部分が多く大変見づらいとは思いますが、ぜひご教授いただければ幸いです。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー