欧元符号后的刮痧价值(Scrapy-Python)

时间:2017-11-11 19:05:20

标签: python web-scraping scrapy scrapy-shell

我需要一个选择器来刮取欧元符号(\ u20ac)之后的值。

<Selector xpath='//*[@class="col-sm-4"]/text()' data=u'\r\n\t\t            \u20ac 30.000,00'>

我尝试了几十种我在堆栈流上找到的变体,但是我无法得到它。

https://regexr.com/这样的方面向我展示了这样的事情:

response.xpath('//*[@class="col-sm-4"]/text()').re('(\u20ac).\d*.\d*.\d*')

应该有用,但它没有。

编辑:这里是我想要抓取的数据的示例链接:https://www.firmenabc.at/manfred-jungwirth-montagen_MoKY

非常感谢帮助!

迈克尔

2 个答案:

答案 0 :(得分:0)

这是您正在寻找的正则表达式。如果您希望在字面上匹配\u20ac,则需要在其前面添加\,以下变体:\u20ac|\\u20ac将匹配€和\ u20ac:

(\u20ac|\\u20ac)\s+.\d*.\d*.\d*

失踪也是\s+\s指定您要匹配空格,\s+指定您要匹配多个空格(请注意\ u20ac与值之间有空格,30.000,00)

请注意,这只会捕获符号(捕获组由封闭的括号()组成,即(之间的任何内容将被捕获

所以我相信你想要的是:

\u20ac|\\u20ac\s+(\d*.*) - 在此,我们将.\d*.*()围绕在一起,从而捕获该值而不是符号。

重复.\d*是多余的,您已经表示您希望通过以前编写它来匹配它的每个事件:\d并将其后缀为*

最后,我建议您使用https://www.regex101.com来使用正则表达式 - 这是一个很棒的工具,可以为您节省很多麻烦。

答案 1 :(得分:0)

试试这个:

response.xpath('//*[@class="col-sm-4"]/text()').re(u'\u20ac\s*(\d+[\d\.,]+)')