Scrapy使用正则表达式从页面文本中提取数字

时间:2014-11-03 21:18:36

标签: regex python-2.7 scrapy

我一直在寻找如何搜索页面上所有文本的几个小时,如果它与正则表达式匹配则提取它。我的蜘蛛设置如下:

def parse(self, response):
        title = response.xpath('//title/text()').extract()
        units = response.xpath('//body/text()').re(r"Units: (\d)")
        print title, units

我想在页面上的“单位:”之后取出数字。当我在一个单位:351的身体上运行scrapy时,我只能获得页面的标题,前面和后面有一堆逃脱,单位没有任何东西。

我是scrapy的新手并拥有一点python经验。任何有关如何在单位之后提取整数的帮助:并从标题中删除额外的转义字符“u'\ r \ n \ t ...”将非常感激。

修改 根据评论,这里是一个示例页面的部分html摘录。请注意,除了此示例中的p之外,这可能位于不同的标记内:

<body>
<div> Some content and multiple Divs here <div>
<h1>This is the count for Dala</h1>
<p><strong>Number of Units:</strong> 801</p>
<p>We will have other content here and more divs beyond</p>
</body>

基于下面的答案,这是大部分方式。仍在努力删除Units:和额外的转义字符。

units = response.xpath('string(//body)').re("(Units: [\d]+)")

1 个答案:

答案 0 :(得分:2)

尝试:

response.xpath('string(//body)').re(r"Units: (\d)")