scrapy Woocommerce产品刮定期和销售价格不提取

oiopk7p5  于 2022-11-09  发布在  其他
关注(0)|答案(3)|浏览(212)

我正在使用Scrapy创建一个数据收集器。我使用

scrapy shell 'https://royalprint.pk/product/name-print-superhero-sweatshirt-011/'

然后运行以下命令

In [43]: response.css('span.woocommerce-Price-currencySymbol::text').get()
Out[43]: 'Rs'

它只返回货币符号。
下面是源代码产品图片

有人能纠正我这里做错了什么吗?
此致

mzsu5hc0

mzsu5hc01#

也许会有帮助。

for price in response.css('p.price'):
    print(price.xpath('./del/span/bdi/text()').get())
    print(price.xpath('./ins/span/bdi/text()').get())
laximzn5

laximzn52#

其实没什么错,只是你弄错了你需要得到的元素。我猜你想得到价格数字,在这种情况下,你应该使用这样的东西:

span.woocommerce-Price-amount bdi::text

正如您所看到的,它是bdi元素,包含您想要的信息,而不是内部span

jbose2ul

jbose2ul3#

您正在引用的***span***元素仅包含 Rs 文本。
<span class="woocommerce-Price-currencySymbol">Rs</span>
但是您想要的 price 信息在***span***元素的结束标记之后。
价格包含在***bdi***元素中。因为我们在网页上有其他***bdi***元素,所以我们需要引用确切的一个。
response.xpath("//p[@class='price']//bdi/text()").extract()

相关问题