IndexError:迭代两个 webelement 列表时列表索引超出范围

Awa*_*ais 0 python selenium web-scraping selenium-webdriver

我试图在终端上打印结果,但收到此错误消息:

IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

下面是代码,在此先感谢您的帮助。这个领域的真正初学者。

import pandas as pd
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

option = Options()
option.add_argument("--disable-infobars")
option.add_argument("start-maximized")
option.add_argument("--disable-extensions")
option.add_experimental_option("excludeSwitches", ['enable-automation'])

# Pass the argument 1 to allow and 2 to block
option.add_experimental_option("prefs", { 
    "profile.default_content_setting_values.notifications": 1 
})
driver = webdriver.Chrome(chrome_options=option, executable_path='C:\\Users\\Sheik\\Desktop\\web crawling\\chromedriver.exe')

driver.implicitly_wait(5000)

url = "https://www.yell.com/"

driver.get(url)

search_query_path = driver.find_element_by_xpath('''//*[@id="search_keyword"]''')
search_query_path.click()
search_query_path.send_keys("Garage Services")
search_city_path = driver.find_element_by_xpath('''//*[@id="search_location"]''')
search_city_path.click()
search_city_path.send_keys("London")
search_btn = driver.find_element_by_xpath('''//*[@id="searchBoxForm"]/fieldset/div[1]/div[3]/button''')
search_btn.click()


names = driver.find_elements_by_class_name("businessCapsule--name")
address = driver.find_elements_by_class_name("businessCapsule--address")

num_page_items = len(names)
for i in range(num_page_items):
    print(f"{names[num_page_items].text} : {address[num_page_items].text}")

driver.close()
Run Code Online (Sandbox Code Playgroud)

Guy*_*Guy 5

您想使用索引i来迭代names和address,而不是列表大小

for i in range(num_page_items):
    print(f"{names[i].text} : {address[i].text}")
Run Code Online (Sandbox Code Playgroud)

或者只是循环 zip

for name, ad in zip(names, address):
    print(f"{name.text} : {ad.text}")
Run Code Online (Sandbox Code Playgroud)