質問: dir_name + "/{0}-{1}.jpg".format(num,i) urllib.request.urlretrieve(imgs[i]["src"],filepath) #実行方法:python download2.py ``` エラーは出ませんでした。 Web上の画像1〜1000番目までをスクレイピングするにはどうしたらよいでしょうか? コメントアウト部分が多く大変見づらいとは思いますが、ぜひご教授いただければ幸いです。 よろしくお願い致します。
回答: ``` for num in range(50): # 50回繰り返す # Webページ取得 resp = requests.get(URL, timeout=1, headers=headers) # Web上の画像を取得 imgs = soup.find_all("img") # ここでは20件しか表示されていない # imgsを保存 ``` なので、当然その動作かと思います。 Google 画像検索のページはスクロールによって ajax で非同期に次のページを読み込んでいるようなので、スクロールしない限り20枚目以降の結果は取得できなさそうです。 が、そもそも画像検索に関してはAPIが用意されているので、スクレイピングよりそちらの利用を推奨します。 https://developers.google.com/custom-search/v1/overview スクレイピングは API などが用意されていない等の理由でとる最後の手段という意味が強く、 デメリットも多いのでAPIがあるのであればそちらの利用を推奨します。 #### デメリット ##### 取得先の相手が望まない形のアクセスとなる * Sleepや適切なコードを書いても訴訟になったケースあり ##### 壊れやすい * 相手先でHTMLの構造を変えられると容易に壊れる ##### JavaScript やブラウザまでエミュレートすると動作が遅い