Python 刮擦式输入处理器
items.py:Python 刮擦式输入处理器,python,scrapy,Python,Scrapy,items.py: import scrapy from scrapy.loader.processors import MapCompose def filter_spaces(value): return value.strip(" ").strip("\n") class LotItem(scrapy.Item): num = scrapy.Field(input_processor=MapCompose(filter_spaces)) spider.py: def
import scrapy
from scrapy.loader.processors import MapCompose
def filter_spaces(value):
return value.strip(" ").strip("\n")
class LotItem(scrapy.Item):
num = scrapy.Field(input_processor=MapCompose(filter_spaces))
spider.py:
def parse_item(self, response):
item = LotItem()
item['num'] = response.xpath('//div/span/text()').extract()[0]
yield item
response.xpath('//div/span/text()).extract()[0]
返回一种
"\n1234 "
我需要把它转换成:“1234”
但我仍然以-{'num':'\n1234'}
非常感谢 您可以将response.xpath与正则表达式一起使用,而不是extract()。数字是这样的:
response.xpath("//div/span/text()").re(r"(?:'num':\s'\\n)([0-9]*)(?:\s*')")
或者像这样的城市:
.re(r'(?:\\"city\\":\s\"G\\\)(.*)(?:\\")')
(所有正则表达式都未经测试,可能需要稍作调整。)“我的代码失败”不是有效的问题描述。请发布所有回溯或错误的全文,并清楚地描述正在发生的事情,以及它与您希望发生的事情有何不同。还有,你试过这个功能吗?当然没有任何错误。。我只是得到了{'num':'\n1234'},而不是我期望得到的{'num':'1234'}。当然,我使用strip()来清除一些spacesok。。。我已成功使用strip()。。。我刚刚将其添加到extract()[0].strip()中,这是解决方案。。。但也有类似的问题-还有其他房地产城市。。。而且它在对象中通常看起来像{“city”:“G\u00fcnzburg”}因为德语。。。我已尝试提取()[0]。编码('utf-8'),但这没有帮助。。??有什么建议吗?