我一直在寻找如何搜索页面上所有文本的几个小时,如果它与正则表达式匹配则提取它。我的蜘蛛设置如下:
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]+)")
答案 0 :(得分:2)
尝试:
response.xpath('string(//body)').re(r"Units: (\d)")