find_elements_by_xpathで複数の要素が該当する場合、List型で変数を取得すると思います。
各要素に対して処理を行う場合、for文を活用するとき、実はfor文内でさらにfind_elements_by_xpathを使用することができました。
例えば、Amazonの商品リストごとに処理を行いたいといった場合に便利ですね。
下記のプログラムでは「class='list_5」で指定された「ulタグ」直下の「liタグ」をすべて取得し、
for文を回す中でさらに各「liタグ」に対して「find_elements_by_xpath」を実行し、画像を取得します。
サイトは 'https://www.min-inuzukan.com/' を参考にしました。
getimg.py
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import io
from urllib import request
from PIL import Image
from time import sleep
# driverを取得
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("URLname")
print("サイトにアクセスしました")
sleep(5)
contents = driver.find_elements_by_xpath("//ul[@class='list_5']/li")
print("xpathにて要素を探しました")
n = 1
try:
for content in contents:
img = content.find_elements_by_xpath("a/img")
imgurl = img[0].get_attribute('src')
f = io.BytesIO(request.urlopen(imgurl).read())
img = Image.open(f)
img.save('img{}.jpg'.format(n))
n += 1
print("画像が保存されました")
sleep(3)
except:
print("エラー発生")
driver.close()
#注意
本プログラムを実行する場合は、自己責任にてお願いいたします。
また、サイト運営者への配慮をお願いいたします。