我必须以特定的顺序从网页抓取数据,因为我在项目类中声明了字段,然后必须将它们放在csv文件中。现在出现的问题是它的存储数据不是像特定顺序那样存储报废任何字段的数据并放入csv文件,但我希望它应该存储我在项目类中声明的数据。我是python中的新手。你能告诉我怎么做吗
对于前: 我的项目类是 class DmozItem(Item): title = Field() link = Field() desc = Field()
现在当它在csv文件中存储数据时,它首先存储desc,链接然后标题 " desc":[]," link":[" / Computers / Programming /"]," title":[&#34 ;编程"]}
答案 0 :(得分:1)
csv文件中的数据顺序不是您声明的原因是因为item是dict数据类型。 dict中键的顺序由其字母顺序决定。将项目导出到csv文件的逻辑在
中实现scrapy \的contrib \ exporter__init __。PY
您可以重写BaseItemExporter的_get_serialized_fields方法,让它按照声明的顺序生成键值对。这是一个示例代码
field_iter = ['title', 'link', 'desc']
for field_name in field_iter:
if field_name in item:
field = item.fields[field_name]
value = self.serialize_field(field, field_name, item[field_name])
else:
value = default_value
yield field_name, value
但要记住,这不是一个通用的解决方案。
答案 1 :(得分:0)
为此,我们必须在BaseItemExporter类的fields_to_export中创建一个列表 field_iter = ['提供',' SKU',' VendorCode']像这样 然后必须在字段中传递此列表