我是python和scrapy的新手,所以我提前为一些愚蠢的问题道歉。我对默认项目加载器的处理器有一些问题,以及相关问题:
我使用默认的\u input_processor变量使用TakeFirst()处理器从列表中提取第一个值,如下所示:
class CaseLoader(scrapy.loader.ItemLoader):
default_input_processor = TakeFirst()
和用法:
^{pr2}$然后我从回调方法中得到这个项,但是TakeFirst()不起作用,我得到一个列表而不是字符串。如果我使用TakeFist()作为默认的输出处理器,它可以工作。默认的“输入”处理器如何工作?为什么在这种情况下不应用takefirst()处理器?
在documentation中,我看到了unicode.strip方法:
from scrapy.loader import ItemLoader
from scrapy.loader.processors import TakeFirst, MapCompose, Join
class ProductLoader(ItemLoader):
default_output_processor = TakeFirst()
name_in = MapCompose(unicode.title)
name_out = Join()
rice_in = MapCompose(unicode.strip)
# ...
但当我试图在Compose()中的项目加载器中使用它时,我得到了错误:
NameError: name 'unicode' is not defined
如果我理解正确,这个方法应该删除字符串开头和结尾的空格。如何正确使用它?我需要编码并使用strip函数吗?
这是因为文档使用的是Python2,而您使用的是Python3
Python3中没有
unicode
。您应该改为使用str
更多信息请参见下面的线程
NameError: global name 'unicode' is not defined - in Python 3
相关问题 更多 >
编程相关推荐