我正在使用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'
它只返回货币符号。下面是源代码产品图片
有人能纠正我这里做错了什么吗?此致
mzsu5hc01#
也许会有帮助。
for price in response.css('p.price'): print(price.xpath('./del/span/bdi/text()').get()) print(price.xpath('./ins/span/bdi/text()').get())
laximzn52#
其实没什么错,只是你弄错了你需要得到的元素。我猜你想得到价格数字,在这种情况下,你应该使用这样的东西:
span.woocommerce-Price-amount bdi::text
正如您所看到的,它是bdi元素,包含您想要的信息,而不是内部span
bdi
jbose2ul3#
您正在引用的***span***元素仅包含 Rs 文本。<span class="woocommerce-Price-currencySymbol">Rs</span>但是您想要的 price 信息在***span***元素的结束标记之后。价格包含在***bdi***元素中。因为我们在网页上有其他***bdi***元素,所以我们需要引用确切的一个。response.xpath("//p[@class='price']//bdi/text()").extract()个
<span class="woocommerce-Price-currencySymbol">Rs</span>
response.xpath("//p[@class='price']//bdi/text()").extract()
3条答案
按热度按时间mzsu5hc01#
也许会有帮助。
laximzn52#
其实没什么错,只是你弄错了你需要得到的元素。我猜你想得到价格数字,在这种情况下,你应该使用这样的东西:
正如您所看到的,它是
bdi
元素,包含您想要的信息,而不是内部spanjbose2ul3#
您正在引用的***span***元素仅包含 Rs 文本。
<span class="woocommerce-Price-currencySymbol">Rs</span>
但是您想要的 price 信息在***span***元素的结束标记之后。
价格包含在***bdi***元素中。因为我们在网页上有其他***bdi***元素,所以我们需要引用确切的一个。
response.xpath("//p[@class='price']//bdi/text()").extract()
个