逃脱美元符号Scrapy Xpath

时间:2016-01-29 21:46:30

标签: python regex xpath scrapy scrapy-spider

使用scrapy spider及其拉错输出的价格。

HTML:

<span style="" class="b-product_price-standard b-product_price-standard--line_through">$350</span>

Xpath:

['price'] = sel.xpath('normalize-space(div/main/div[4]/div[3]/div/div[1]/h1[2]/div/span[1]/text())').extract()

结果:

'price': [u'\u20ac300]

似乎是价格中的“$”导致问题。我一直在挖掘,我似乎无法找到一个我认为是一个常见问题的答案,这让我觉得它可能更多,我错过了。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

使用重新代替提取

['price'] = sel.xpath('.../span[1]/text())').re('\d+')

答案 1 :(得分:0)

Casimir et Hippolyte是对的,检索到正确的结果,但它在Python中的表示看起来不同。但除此之外,你的XPath表达式并不理想。

尽量不依赖冗长的位置XPath表达式,当HTML文档发生微小变化时,它们很容易破解。

相反,尝试按属性查找元素。也许这种类属性的组合是独一无二的?例如

//span[@class = 'b-product_price-standard b-product_price-standard--line_through']

可行。如果没有,则必须显示更多正在选择的HTML文档。