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

XPath定位同结构商品列表title属性失败,仅识别首个元素

问题解答

无法定位其他元素的原因

你的XPath路径中包含li[1],这个索引明确指定了仅匹配列表中的第一个<li>元素,所以find_elements只能返回这一个匹配结果,自然获取不到其他商品条目。

更优的元素定位方式

1. 修正XPath定位

移除XPath里的li[1]索引,让路径匹配所有列表项内的<a>标签,就能获取全部商品链接元素:

xpath = "//body/div[@class='marketlist']/div[@class='l_Layout']/div[@id='j_market_card']/div[@id='j_list_card']/ul[@class='card_csgo']/li/a"
for item in driver.find_elements("xpath", xpath):
    title = item.get_attribute("title")
    print(title)

也可以简化路径,直接定位card_csgo列表下所有带title属性的<a>标签(如果页面中这类标签仅属于商品列表):

xpath = "//ul[@class='card_csgo']//a[@title]"

2. 使用CSS选择器(推荐)

CSS选择器语法更简洁,浏览器解析效率也更高,针对这个场景可以这样写:

from selenium.webdriver.common.by import By

# 定位card_csgo列表下所有li中的a标签
items = driver.find_elements(By.CSS_SELECTOR, "ul.card_csgo li a")
for item in items:
    print(item.get_attribute("title"))

如果需要更精准筛选,可直接指定title属性存在:

items = driver.find_elements(By.CSS_SELECTOR, "ul.card_csgo li a[title]")

3. 分层定位

先定位所有商品列表项,再逐个获取内部的<a>标签,这种方式逻辑更清晰,也能避免复杂的路径:

from selenium.webdriver.common.by import By

li_items = driver.find_elements(By.CSS_SELECTOR, "ul.card_csgo li")
for li in li_items:
    a_tag = li.find_element(By.TAG_NAME, "a")
    print(a_tag.get_attribute("title"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:15:17