Selenium IndexError: list index out of range 错误解决方法

在使用 Selenium 抓取京东商品信息时,可能会遇到 IndexError: list index out of range 错误。本文将详细解释错误原因并提供解决方案。

问题代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# import time

from selenium.webdriver.common.by import By

# 传参
s = Service("chromedriver.exe")
driver = webdriver.Chrome()

driver.get('https://www.jd.com/')

driver.find_element(By.XPATH, '//*[@id="key"]').send_keys("RedmiK60")
driver.find_element(By.CSS_SELECTOR, '#search > div > div.form > button').click()
driver.implicitly_wait(10)
lis = driver.find_elements(By.CSS_SELECTOR, '.goods-list-v2.gl-type-3 .gl-item .gl-i-wrap')
# print(lis)
for li in lis:
    shop_name = li.find_elements(By.CSS_SELECTOR, '.J_im_icon a')[0].text # 店铺名
    title = li.find_elements(By.CSS_SELECTOR, '.p-name em')[0].text # 商品名
    price = li.find_elements(By.CSS_SELECTOR, '.p-price i')[0].text # 价格
    print(shop_name,title,price)

问题原因:

当某个 li 元素中没有 '.J_im_icon a' 元素时,li.find_elements(By.CSS_SELECTOR, '.J_im_icon a') 返回的列表为空,所以执行 [0] 就会报错。

解决方法:

在取列表中的第一个元素前,判断一下列表是否为空,如果不为空才执行 [0]

修改后的代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# import time

from selenium.webdriver.common.by import By

# 传参
s = Service("chromedriver.exe")
driver = webdriver.Chrome()

driver.get('https://www.jd.com/')

driver.find_element(By.XPATH, '//*[@id="key"]').send_keys("RedmiK60")
driver.find_element(By.CSS_SELECTOR, '#search > div > div.form > button').click()
driver.implicitly_wait(10)
lis = driver.find_elements(By.CSS_SELECTOR, '.goods-list-v2.gl-type-3 .gl-item .gl-i-wrap')
# print(lis)
for li in lis:
    shop_name_list = li.find_elements(By.CSS_SELECTOR, '.J_im_icon a') # 店铺名
    if shop_name_list:
        shop_name = shop_name_list[0].text
    else:
        shop_name = ''
    title = li.find_elements(By.CSS_SELECTOR, '.p-name em')[0].text # 商品名
    price = li.find_elements(By.CSS_SELECTOR, '.p-price i')[0].text # 价格
    print(shop_name,title,price)

通过以上方法,即可避免 IndexError: list index out of range 错误。

Selenium IndexError: list index out of range 错误解决方法

原文地址: https://www.cveoy.top/t/topic/luIK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录