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

Scrapy中XPath精确匹配class返回空列表、contains匹配生效原因咨询

XPath精确匹配class返回空的原因
  • 动态类注入导致原始HTML与渲染后DOM属性不一致:jquery-tablesorter是jQuery表格排序插件在浏览器端加载完成后,动态添加到目标表格元素的class属性中的。你通过爬虫发起请求拿到的是服务端返回的原始HTML,此时该表格的class属性仅为wikitable sortable,没有额外的jquery-tablesorter类,因此用包含该类的精确匹配规则自然无法命中元素。你在浏览器F12开发者工具中看到的是页面渲染完成后的最终DOM属性,和爬虫拿到的原始HTML内容存在差异。
  • 精确匹配对class属性的格式要求极高:@class="xxx"是对属性完整值的严格匹配,包括类的排列顺序、分隔空格的数量、是否存在首尾多余空格,任意一处和规则不一致都会匹配失败。而contains(@class, "wikitable sortable")属于模糊匹配,只要属性值中存在对应的连续字符串即可命中,容错性更高。

推荐优化写法

如果要避免类顺序、中间插入其他类导致的匹配失效,可以用多条件模糊匹配单个类名:
response.xpath('//table[contains(@class, "wikitable") and contains(@class, "sortable")]')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:45:04