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

如何在Scrapy的CSS选择器中使用正则表达式匹配动态类名

解决Scrapy中匹配类名带可变两位字母的ul标签问题

你可以利用Scrapy扩展的CSS伪类:regex()来实现正则匹配属性,完美适配你这种类名只有末尾两位字母变化的场景。

核心代码示例

针对你的需求,直接用正则匹配class属性:

img_ul = response.css('ul:regex(class, product-gallery[a-z]{2}__thumbs)')
print(img_ul)

如果目标ul标签的class属性可能包含多个类名(比如<ul class="extra-class product-galleryfp__thumbs">),可以调整正则,确保能匹配到包含目标模式的class:

img_ul = response.css('ul:regex(class, .*product-gallery[a-z]{2}__thumbs.*)')

代码说明

  • ul:指定只匹配ul标签,避免误选其他标签
  • :regex(class, 正则表达式):Scrapy特有的CSS伪类,专门用来对指定属性应用正则匹配
  • product-gallery[a-z]{2}__thumbs:正则规则表示:以product-gallery开头,紧跟2个小写字母,最后是__thumbs,完全匹配你给出的类名模式
  • 前后加.*:是为了兼容class属性中存在其他类名的情况,确保只要包含目标类名模式就能被匹配到

备选方案(准确性稍弱)

如果不想用正则,也可以用属性包含匹配,但这种方法可能会误匹配不符合两位字母规则的类名(比如product-galleryabc__thumbs),仅作参考:

img_ul = response.css('ul[class*="product-gallery"][class*="__thumbs"]')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:15:20