Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.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 刮擦式输入处理器_Python_Scrapy - Fatal编程技术网

Python 刮擦式输入处理器

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

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 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'),但这没有帮助。。??有什么建议吗?