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

2024-03-06

我花了几个小时来了解如何搜索页面上的所有文本以及如果它与正则表达式匹配则提取它。我的蜘蛛设置如下:

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

我想提取页面上“单位:”后面的数字。当我在正文中包含 Units: 351 的页面上运行 scrapy 时,我只得到页面的标题,前后有一堆转义符,而没有任何单位。

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

EDIT:根据评论,这里是示例页面的部分 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]+)")

Try:

response.xpath('string(//body)').re(r"Units: (\d)")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐