我需要一个选择器来刮取欧元符号(\ 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
非常感谢帮助!
迈克尔
答案 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\.,]+)')