2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【python selenium】find_elementsで取得した要素に対してfind_elementsを実行

Last updated at Posted at 2022-01-23

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()

#注意
本プログラムを実行する場合は、自己責任にてお願いいたします。
また、サイト運営者への配慮をお願いいたします。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?