繁体   English   中英

插入scrapy项目

[英]Inserting into scrapy items

所以,我想我很难把头放在 python Dicts 上。 我有一个scraper ,我成功地制作了一个通过网页解析的字典; 现在是时候插入我定义为scrapy Field的项目了

class ApplicationItem(Item):
 Case_reference = Field()
 Application_name = Field()
 Contact_name = Field()
 Contact_telephone = Field()

我在这里创建了一个像这样的 python 字典:

{u" Applicant's name: ": u' KIMARO COMPANY INC ',
 u' Case reference: ': u' ARB/15/00696 ',
 u' Contact name: ': u' ',
 u' Contact telephone: ': u' 07957 140179 ' }

我的问题是如何确保将正确的值从字典中插入到scrapy 项目中。 到目前为止我有这个:

for res, rec in application.items():
    item['Case_reference'] = application.get(result(res))
    item['Application_name'] = application.get(result(res))
    item['Contact_name'] = application.get(result(res))
    item['Contact_telephone'] = application.get(result(res))

我认为这不会达到我的预期! 我实际上在这方面得到了 python typeError。 任何的想法?

item是我尝试插入的实际字段。 所以它是ApplicationItem 的一个实例

item['Case_reference'] = application.get() 

是我尝试从以前创建的字典插入每个字段的方式。

由于item不是字典,因此您不能调用item['key'] = value

相反,使用:

setattr(obj, attribute, value)

试试这个代码:

class ApplicationItem(Item):
    ATTRIBUTE_MAPPINGS = {
        " Applicant's name: " : "Application_name",
        " Case refference " : "Case_reference",
        " Contact name: " : "Contact_name",
        "' Contact telephone: " : "Contact_telephone",
    }
    Case_reference = Field()
    Application_name = Field()
    Contact_name = Field()
    Contact_telephone = Field()

你的循环将是:

for key, value in application.iteritems():
    setattr(item, ApplicationItem.ATTRIBUTE_MAPPINGS[key], application.get(result(key)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM