Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 刮削时提取数字_Python 3.x_Scrapy_Re - Fatal编程技术网

Python 3.x 刮削时提取数字

Python 3.x 刮削时提取数字,python-3.x,scrapy,re,Python 3.x,Scrapy,Re,我试图从一个公寓列表网站上获取som数据 我想用价格来计算。所以我需要将其存储为数字。但网站上的文字是这样写的:5670美元/月 我想删除所有字符和空格,然后将其设置为整数保存在我的数据库中 我尝试了正则表达式,但得到了这个错误 TypeError:应为字符串或类似字节的对象 这是我收集价格的一个要素 <p class="info-price">399&nbsp;euro&nbsp;per&nbsp;month</p> 我应该

我试图从一个公寓列表网站上获取som数据

我想用价格来计算。所以我需要将其存储为数字。但网站上的文字是这样写的:5670美元/月

我想删除所有字符和空格,然后将其设置为整数保存在我的数据库中

我尝试了正则表达式,但得到了这个错误

TypeError:应为字符串或类似字节的对象

这是我收集价格的一个要素

<p class="info-price">399&nbsp;euro&nbsp;per&nbsp;month</p>

我应该如何以及何时转换它?

因此我找到了一个解决方案。也许这是一个肮脏的解决方案,有人带着优雅的一句台词

但据我所知,我用这一行勉强拼凑了一下

 p = response.xpath('//p[@class="info-price"]/text()').extract()
是一个列表对象

因此,我添加了一行代码将其“转换”为sa字符串

p = ''.join(map(str, p))    #Convert to string from list object
p = re.sub('\D', '', p)     #Remove all but numbers
最后,删除所有空格和文本,所以我最终只得到了我使用的代码中数字的价格

p = ''.join(map(str, p))    #Convert to string from list object
p = re.sub('\D', '', p)     #Remove all but numbers
总之,这个代码段获取price的文本,将其转换为字符串,然后删除除niumber以外的所有内容

p = response.xpath('//p[@class="info-price"]/text()').extract()
    p = ''.join(map(str, p))    #Convert to string from list object
    p = re.sub('\D', '', p)     #Remove all but numbers
.extract()
方法所做的是查找xpath表达式的所有出现项;这就是它返回一个列表的原因——可能有多个结果。如果您知道只有一个结果或只关心第一个结果,请改用
.extract_first()
——它将以字符串形式返回第一个结果(如果没有找到匹配项,则返回无结果),因此您不必将列表转换为字符串。(见附件)


你能用一个例子分享这个网站的链接吗?它是几个网站,结果是一样的。我从价格和货币上得到了全文。我刮的时候是这样的。“3995韩元”或“249欧元/月”。当我想要它们“3995”和“249”的时候。看看这个,然后使用html解析器。@wuerfelfreak我不明白。但我还是设法解决了。谢谢你的回复!这只是意味着正则表达式很少是解析html的好选择。但我很高兴你让它工作了。祝您有个美好的一天!