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

使用Lxml检测元素文本并获取同级元素href的技术实现

使用Lxml批量检测售罄商品并获取商品链接

实现思路

  1. 定位页面中所有独立的商品容器(.card-body)
  2. 对每个商品容器,检查是否存在文本为Sold的.badge-text元素(处理文本首尾空格避免匹配失败)
  3. 若存在该元素,获取同级.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:05:20