[英]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.