使用列表在Scrapy中定义项目类中的字段

bjg7j2ky  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(106)

我想在Scrappy中为我的项目类创建字段我从csv阅读列表,然后#将其转换为列表,但当我想使用init在项目类中定义字段时,它给了我这个错误#raise AttributeError(name)#AttributeError:_values。您的意思是:“价值观”?

无论如何,这是代码请帮我修复这个

fields = pd.read_csv('E:/pythonProject/webscrapping/postscrape/fields.csv')
fields = list(fields['0'])
fields.insert(0, 'Company')

class PostscrapeItem(scrapy.Item):
    # define the fields for your item here like:
    def __init__(self):
        for f in fields:
            self.__dict__[f] = scrapy.Field()

i = PostscrapeItem()
print(i.Keys())
olqngx59

olqngx591#

__init__类使用非标准 meta类,这使得重写__init__既不可能也不必要。
如果您的目标是动态地向item类添加字段,则应该通过设置Item.fields字典的值来实现。
此示例应显示所需的所有内容:

fields = pd.read_csv('E:/pythonProject/webscrapping/postscrape/fields.csv')
fields = list(fields['0'])
fields.insert(0, 'Company')

class PostscrapeItem(scrapy.Item):

    @classmethod
    def load_fields(cls, fields):
        for f in fields:
            cls.fields[f] = scrapy.Item()

PostscrapeItem.load_fields(fields)

不需要创建示例。

相关问题