You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Selenium打印指定分类链接?解决重复输出问题

问题解决:获取指定分类下所有链接而非重复输出第一个

问题根源

你代码中使用了driver.find_element(By.XPATH, "//a[@class='classified ']"),这个方法只会返回页面中第一个匹配的元素,所以后续循环里反复打印的都是同一个链接。

修正方案

将find_element改为find_elements(注意复数形式),该方法会返回所有符合条件的元素列表,再遍历列表逐个提取链接即可。

核心修正代码

# 获取所有符合条件的链接元素
listing_results = driver.find_elements(By.XPATH, "//a[@class='classified ']")

# 遍历每个元素打印链接
for result in listing_results:
    print(result.get_attribute('href'))

完整修正代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

# 创建Chrome浏览器实例
driver = webdriver.Chrome()
driver.get("https://www.skelbimai.lt/")
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, "//a[@href='/skelbimai/technika/mobilus-telefonai']")))
driver.find_element(By.XPATH, "//a[@href='/skelbimai/technika/mobilus-telefonai']").click()
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, "//button[@mode='primary']")))
driver.find_element(By.XPATH, "//button[@mode='primary']").click()
driver.find_element(By.XPATH, "//input[@id='search-query']").click()
driver.find_element(By.XPATH, "//input[@id='search-query']").send_keys("nokia 3310")
driver.find_element(By.XPATH, "//select[@id='search-place']").click()

city_search = driver.find_element(By.XPATH, "//select[@id='search-place']")
city_target = driver.find_element(By.XPATH, "//option[@value='19']")
driver.execute_script("arguments[0].scrollIntoView();", city_target)
driver.execute_script("window.scrollTo(0, 0);")
city_target = WebDriverWait(driver, 1).until(EC.element_to_be_clickable((By.XPATH, "//option[@value='19']")))
city_target.click()
driver.find_element(By.XPATH, "//button[@type='submit']").click()

# 改为find_elements获取所有匹配元素
listing_results = driver.find_elements(By.XPATH, "//a[@class='classified ']")

# 遍历所有元素打印链接
for result in listing_results:
    print(result.get_attribute('href'))

driver.close()

额外提示

建议在获取元素列表前添加显式等待,确保所有元素加载完成,避免因页面未完全渲染导致获取的元素数量不全:

WebDriverWait(driver, 5).until(EC.presence_of_all_elements_located((By.XPATH, "//a[@class='classified ']")))

内容的提问来源于stack exchange,提问作者Vytautas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:22:05