【发布时间】:2019-10-05 16:22:12
【问题描述】:
我正在尝试获取价格文本
potterybarn 在scrapy shell 中。我使用了scrapy shell "https://www.potterybarnkids.com/shop/easter/easter-shop-all-baskets/",然后尝试获取跨度内的价格class="price-state price-sale" 有没有办法提取跨度内的整个文本并进入其中的每个跨度?
我试过了
response.xpath('//span[@class="price-state price-sale"]/text()').extract() 还有response.xpath('//span[@class="price-state price-sale"]//text()')[0].extract()
我需要一种方法来提取选择器天气中的所有文本,它具有内部跨度、div、...
我检查了How can i extract only text in scrapy selector in python,也检查了Scrapy extracting text from div,在这个答案中假设它只包含在那个例子和这个例子中工作的跨度孩子。但是有没有更通用的方法来正确提取子项中的所有文本,因为//text() 不起作用。
【问题讨论】:
-
我快速浏览了 HTML。看来“价格金额”类的跨度元素是以价格作为内部文本的元素。 “price-state price-sale”类的 span 元素的内部文本为 '\n'。
-
@DMfll 跨度包含 html 格式的文本“Sale $5.99 – $18.99”(包括 \n ...)
-
是的。我知道了。我正在使用 lxml 查看元素。您会发现,如果您遍历
'/html/body/div[3]/main/div/div[4]/div[2]/ul/li[1]/span/span[2]'元素的所有后代而不是子元素,您将获得一个['\nSale\n', '\n', '$', '5.99', '\n', '$', '18.99']数组作为文本项。