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
相关产品推荐
相关产品推荐

