使用Lxml检测元素文本并获取同级元素href的技术实现
使用Lxml批量检测售罄商品并获取商品链接
实现思路
- 定位页面中所有独立的商品容器(
.card-body) - 对每个商品容器,检查是否存在文本为
Sold的.badge-text元素(处理文本首尾空格避免匹配失败) - 若存在该元素,获取同级
.image容器下a标签的href属性,收集所有售罄商品的链接
代码实现
from lxml import html # 假设html_content是你获取到的目标页面HTML内容 html_content = """ <div class="card-body"> <div class="badge"> <div> <span class="badge-text"> Sold</span> </div> </div> <div class="image"> <a href="test.com"></a> </div> </div> <div class="card-body"> <div class="image"> <a href="test2.com"></a> </div> </div> """ # 解析HTML内容 tree = html.fromstring(html_content) # 收集售罄商品链接 sold_item_links = [] # 遍历所有商品容器 for card in tree.xpath('//div[@class="card-body"]'): # 检查当前商品是否有标记为Sold的badge has_sold_badge = card.xpath('.//span[@class="badge-text"][normalize-space(text())="Sold"]') if has_sold_badge: # 获取对应商品链接 item_link = card.xpath('.//div[@class="image"]/a/@href') if item_link: sold_item_links.append(item_link[0]) # 输出结果 print("售罄商品链接列表:", sold_item_links)
关键细节说明
- 使用
normalize-space(text())处理文本中的首尾空格,解决HTML中Sold(带前置空格)无法直接匹配Sold的问题 - 每个容器内的XPath查询以
.开头,确保仅在当前商品容器内查找元素,避免全局匹配混乱 - 添加了链接存在性判断,防止因页面结构异常导致的索引错误
内容的提问来源于stack exchange,提问作者Hey Hey
相关产品推荐
相关产品推荐

