使用Selenium将href链接加入列表时报str对象无get_attribute属性错误
问题根源
报错的核心原因是变量名冲突+遍历过程中修改迭代对象:
- 你最初定义
carLinks = []是用于存储最终的链接字符串,但后续直接用carLinks = driver.find_elements_by_css_selector("div.grid-box-container a")把该变量覆盖为Selenium WebElement对象列表 - 你循环遍历的对象就是
carLinks本身,遍历过程中又持续向同一个列表追加字符串类型的链接,当循环迭代到你追加的字符串元素时,尝试调用get_attribute方法自然会触发属性不存在的报错 - 直接打印不会报错是因为打印操作没有修改迭代的列表,循环只会迭代初始的WebElement对象,不会触发遍历字符串的逻辑
修复方案
只需要把存储WebElement的变量和存储链接的变量分开命名即可,修改后代码如下:
from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get("https://www.tred.com/buy?body_style=&distance=50&exterior_color_id=&make=&miles_max=100000&miles_min=0&model=&page_size=24&price_max=100000&price_min=0&query=&requestingPage=buy&sort=desc&sort_field=updated&status=active&year_end=2022&year_start=1998&zip=") carLinks = [] # 元素列表使用独立变量名,不和存链接的变量重名 car_elements = driver.find_elements_by_css_selector("div.grid-box-container a") for car_element in car_elements: carLinkUrl = car_element.get_attribute("href") carLinks.append(carLinkUrl) print(carLinks) driver.quit()
内容的提问来源于stack exchange,提问作者Pavel Rahman
相关产品推荐
相关产品推荐

