Selenium爬取商品页面时无法获取产品URL问题咨询
问题原因与解决方案
核心问题1:方法返回值类型不匹配
- 你调用的
find_elements_by_xpath(复数形式elements)返回的是WebElement对象列表,不是单个元素,不能直接对列表调用get_attribute方法,会直接触发报错。
如果要操作单个元素,要么改用find_element_by_xpath(单数形式element)取第一个匹配元素,要么遍历列表逐个操作每个元素。
核心问题2:匹配的元素本身没有href属性
- 你XPath匹配的id前缀为
testId-pod-displaySubTitle-的元素,通常是用来展示商品名称的文本标签(比如<span>、<p>标签),本身就不携带href属性,href属性一般绑定在包裹该文本标签的父级<a>标签上。
修复后的代码示例
方案1:遍历商品名元素向上查找父级链接
# 先拿到所有商品名称元素 product_name_elements = driver.find_elements_by_xpath("//*[starts-with(@id, 'testId-pod-displaySubTitle-')]") for name_ele in product_name_elements: # 向上查找最近的a标签 product_a = name_ele.find_element_by_xpath("./ancestor::a[1]") product_url = product_a.get_attribute('href') print(product_url)
方案2:直接修改XPath匹配链接标签
# 直接定位所有包含对应商品名子元素的a标签,批量提取href product_urls = [a.get_attribute('href') for a in driver.find_elements_by_xpath("//a[.//*[starts-with(@id, 'testId-pod-displaySubTitle-')]]")]
内容的提问来源于stack exchange,提问作者Sebastián
相关产品推荐
相关产品推荐

