【问题标题】:Scraping Value after Euro Symbol (Scrapy-Python)欧元符号后的刮取值(Scrapy-Python)
【发布时间】:2017-11-11 19:05:19
【问题描述】:

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

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

我尝试了几十种我在 stackoverflow 和 elsewere 上找到的变体,但我无法得到它。

https://regexr.com/ 这样的侧面向我展示了这样的东西:

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

应该可以,但是不行。

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

不胜感激!

迈克尔

【问题讨论】:

  • 希望我的回答对你有帮助,如果有,请把答案标记为正确:)
  • 你能在这里提供一大堆元素吗?您既没有透露链接,也没有任何足够的资源来处理它。如果不进行实际测试,很难回答。
  • 你的权利 Shahin - 我更新了一个示例链接 - 也在这里:firmenabc.at/manfred-jungwirth-montagen_MoKY
  • 感谢您更新您的问题以使问题更加清晰。但是,我在该页面上找不到任何接近 30.000,00 的金额;相反,这是我可以看到的 150,000.00 欧元。带我先找到那个数量的位置。谢谢。
  • 这家公司只是一个例子,因为那家公司拥有 30.000,00 欧元 - 因此,对于 Firmenabc.at 的其他所有公司来说,对于刮取这家公司的欧元金额的提示是值得赞赏的。问候

标签: python web-scraping scrapy scrapy-shell


【解决方案1】:

这是您要查找的正则表达式。如果你想从字面上匹配\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 来玩转正则表达式 - 这是一个很棒的工具,可以让您省去很多麻烦。

【讨论】:

  • 我从您的回答中学到了很多 - 谢谢! - 不幸的是 "\u20ac|\\u20ac\s+(\d*.*)" - 或变体,无法正常工作。也许它与€符号前的空格有关? (\r\n\t\t \u20ac...)
  • 试试这个\s+(\d*.*)
【解决方案2】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 2014-11-11
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多