从列表中向 scrapy 中的项目添加字段
Adding fields to item in scrapy from list
我有一长串要添加到 scrapy 项目的字段,但不知道该怎么做。基本上我正在尝试获取
的输出
class myItem(scrapy.Item):
a = scrapy.field()
b = scrapy.field()
但我想从
这样的列表中创建它
['a','b']
我试过了
fields = ['a','b']
def generateFields(fields):
item = myItem()
for field in fields:
field = scrapy.Field()
return item
但这没有用。谢谢!
您可以使用 python 魔术方法 __dict__
来管理它,就像:
fields = ['a', 'b', 'c']
class MyItem(scrapy.Item):
def __init__(self):
for f in fields:
self.__dict__[f] = scrapy.field()
my_item = MyItem()
等等...
看来我之前的评论对通常的 python class 有效,对 scrapy.Item
class 无效。以下代码有效:
from scrapy import Item, Field
fields = ['a', 'b', 'c']
def generate_item(fields):
item = Item()
for f in fields:
item.fields[f] = Field()
return item
item_instance = generate_item(fields)
item_instance['a'] = 'some_value'
item_instance['b'] = 12
print(item_instance)
我有一长串要添加到 scrapy 项目的字段,但不知道该怎么做。基本上我正在尝试获取
的输出class myItem(scrapy.Item):
a = scrapy.field()
b = scrapy.field()
但我想从
这样的列表中创建它['a','b']
我试过了
fields = ['a','b']
def generateFields(fields):
item = myItem()
for field in fields:
field = scrapy.Field()
return item
但这没有用。谢谢!
您可以使用 python 魔术方法 __dict__
来管理它,就像:
fields = ['a', 'b', 'c']
class MyItem(scrapy.Item):
def __init__(self):
for f in fields:
self.__dict__[f] = scrapy.field()
my_item = MyItem()
等等...
看来我之前的评论对通常的 python class 有效,对 scrapy.Item
class 无效。以下代码有效:
from scrapy import Item, Field
fields = ['a', 'b', 'c']
def generate_item(fields):
item = Item()
for f in fields:
item.fields[f] = Field()
return item
item_instance = generate_item(fields)
item_instance['a'] = 'some_value'
item_instance['b'] = 12
print(item_instance)