Добавление полей к элементу в списке из списка - PullRequest
0 голосов
/ 01 июля 2018

У меня есть длинный список полей, которые нужно добавить к элементу скрапа, но я не могу понять, как это сделать. В основном я пытаюсь получить вывод

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

Но это не сработало. Спасибо!

1 Ответ

0 голосов
/ 01 июля 2018

Вы можете управлять им, используя магический метод 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, а не для класса scrapy.Item. Следующий код работает:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...