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

Scrapy使用通配符选择Magento站点动态ID的价格元素

解决Magento站点动态ID价格元素的抓取问题

嘿,我懂你碰到的这个麻烦!Magento喜欢给元素ID加随机后缀,确实容易让新手卡壳。你之前试的starts-with思路是对的,可能是写法上出了点小问题,我给你整理几种靠谱的方法:

方法1:正确使用XPath的starts-with

你之前写的是starts-with(@class,"price-including-tax-"),但目标元素的ID才是带可变后缀的,不是class!所以应该针对@id来写:

//span[starts-with(@id, "price-including-tax-")]/text()

这样就能匹配所有ID以price-including-tax-开头的<span>元素,不管后面的数字是什么。

方法2:用XPath的contains做模糊匹配

如果有时候前缀可能有小变化,也可以用contains来匹配ID里包含指定字符串的元素:

//span[contains(@id, "price-including-tax")]/text()

这个更宽松,只要ID里有price-including-tax这段内容就能匹配到。

方法3:CSS选择器的属性前缀匹配

Scrapy也支持CSS选择器的属性前缀匹配,写法更简洁:

span[id^="price-including-tax-"]::text

这里的^=表示“属性值以指定字符串开头”,和XPath的starts-with效果完全一致。

额外小提示

如果页面里有多个符合条件的价格元素,你可能需要进一步缩小范围,比如结合它的父元素或者相邻元素来定位,避免抓错内容:

//div[@class="product-info-main"]//span[starts-with(@id, "price-including-tax-")]/text()

这样能确保你抓的是当前商品的价格,而不是页面其他地方的价格。

你可以把这些表达式放到Scrapy的response.xpath()或者response.css()里试试,应该就能顺利拿到价格了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:43:10