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

Python使用XPath获取指定class的a标签href返回空值如何解决

问题根因

你写的XPath表达式存在重复嵌套a标签选择的逻辑错误:你已经定位到了class为dropdown-item的a标签,后续又加了//a去查找该a标签内部的子a标签,而HTML规范里a标签不允许嵌套,自然匹配不到任何内容,所以返回空。

正确的XPath写法

直接把筛选href的条件合并到dropdown-item的a标签筛选里即可,末尾加/@href直接提取href属性值:

//div[@class='dropdown-menu']//a[@class='dropdown-item' and contains(@href, 'category')]/@href

如果是用Scrapy框架的response.xpath提取,写完表达式后调用.get()(拿第一个匹配结果)或者.getall()(拿所有匹配结果)获取实际值即可,示例代码:

# 提取所有符合条件的href属性值
href_list = response.xpath("//div[@class='dropdown-menu']//a[@class='dropdown-item' and contains(@href, 'category')]/@href").getall()

额外适配场景说明

  • 如果元素class存在多个值(比如class="dropdown-item active"这种复合类名),可以用contains(@class, 'dropdown-item')代替精确匹配@class='dropdown-item',避免漏匹配
  • 如果提取到的href是相对路径,可以用response.urljoin(提取到的href)补全为绝对路径,方便后续发起请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:36:03