在欧元符号后抓取值 (Scrapy-Python)
Scraping Value after Euro Symbol (Scrapy-Python)
我需要一个选择器来抓取欧元符号 (\u20ac) 后的值。
<Selector xpath='//*[@class="col-sm-4"]/text()' data=u'\r\n\t\t \u20ac 30.000,00'>
我尝试了在 Whosebug 和 elsewere 上找到的几十种变体,但我无法得到它。
像 https://regexr.com/ 这样的方面向我展示了这样的事情:
response.xpath('//*[@class="col-sm-4"]/text()').re('(\u20ac).\d*.\d*.\d*')
应该可以,但不行。
编辑:这里有一个 link 我想抓取的数据示例:https://www.firmenabc.at/manfred-jungwirth-montagen_MoKY
非常感谢帮助!
迈克尔
这是您要查找的正则表达式。如果你想按字面意思匹配 \u20ac
,你需要在它前面加上一个 \
,下面的变体:\u20ac|\u20ac
将同时匹配 € 和 \u20ac:
(\u20ac|\u20ac)\s+.\d*.\d*.\d*
还少了一个\s+
。 \s
指定要匹配一个白色space,\s+
指定要匹配多个白色space(注意\u20ac和\u20ac之间有白色space值,30.000,00)
请注意,这将仅捕获 €
符号(捕获组由右括号 ()
组成,即(这之间的任何内容都将被捕获)
所以我相信你想要的是:
\u20ac|\u20ac\s+(\d*.*)
- 在这里,我们用 ()
包围 .\d*.*
,因此捕获该值而不是 €
符号。
重复 .\d*
是多余的,您之前已经表示要匹配它的每一次出现:\d
并在其后缀 *
.
最后,我建议您使用 https://www.regex101.com 玩正则表达式 - 这是一个很棒的工具,可以让您省去很多麻烦。
试试这个:
response.xpath('//*[@class="col-sm-4"]/text()').re(u'\u20ac\s*(\d+[\d\.,]+)')
我需要一个选择器来抓取欧元符号 (\u20ac) 后的值。
<Selector xpath='//*[@class="col-sm-4"]/text()' data=u'\r\n\t\t \u20ac 30.000,00'>
我尝试了在 Whosebug 和 elsewere 上找到的几十种变体,但我无法得到它。
像 https://regexr.com/ 这样的方面向我展示了这样的事情:
response.xpath('//*[@class="col-sm-4"]/text()').re('(\u20ac).\d*.\d*.\d*')
应该可以,但不行。
编辑:这里有一个 link 我想抓取的数据示例:https://www.firmenabc.at/manfred-jungwirth-montagen_MoKY
非常感谢帮助!
迈克尔
这是您要查找的正则表达式。如果你想按字面意思匹配 \u20ac
,你需要在它前面加上一个 \
,下面的变体:\u20ac|\u20ac
将同时匹配 € 和 \u20ac:
(\u20ac|\u20ac)\s+.\d*.\d*.\d*
还少了一个\s+
。 \s
指定要匹配一个白色space,\s+
指定要匹配多个白色space(注意\u20ac和\u20ac之间有白色space值,30.000,00)
请注意,这将仅捕获 €
符号(捕获组由右括号 ()
组成,即(这之间的任何内容都将被捕获)
所以我相信你想要的是:
\u20ac|\u20ac\s+(\d*.*)
- 在这里,我们用 ()
包围 .\d*.*
,因此捕获该值而不是 €
符号。
重复 .\d*
是多余的,您之前已经表示要匹配它的每一次出现:\d
并在其后缀 *
.
最后,我建议您使用 https://www.regex101.com 玩正则表达式 - 这是一个很棒的工具,可以让您省去很多麻烦。
试试这个:
response.xpath('//*[@class="col-sm-4"]/text()').re(u'\u20ac\s*(\d+[\d\.,]+)')