【问题标题】:Change CSV result of Image Pipeline on Scrapy在 Scrapy 上更改图像管道的 CSV 结果
【发布时间】:2018-10-26 00:46:22
【问题描述】:

我正在使用默认的 Scrapy Images Pipeline,并将我的数据导出为 CSV。最后一个字段自动填充一个包含原始 url、本地路径和校验和的数组。但是,我只需要一个包含本地路径的字符串。我该怎么做?

【问题讨论】:

    标签: scrapy scrapy-pipeline


    【解决方案1】:

    我猜你会得到类似的结果

    item["images"] = [
      {'checksum': '2b00042f7481c7b056c4b410d28f33cf',
       'path': 'full/0a79c461a4062ac383dc4fade7bc09f1384a3910.jpg',
       'url': 'http://www.example.com/files/product1.pdf'}]
    

    在 Pipeline 的 process_item() 方法中,执行此操作

    def process_item(self, item, spider):
    
        images = item["images"]
        del item["images"]
    
        item['path'] = []
        for k,v in images.iteritems():
            item['path'].extend([v['path']])
    

    【讨论】:

    • 根据doc.scrapy.org/en/latest/topics/… 我不认为我可以扩展 process_item 方法。我错了吗?
    • 我不是说要扩展那个方法......你只有一个 ItemPipeline 并且在那个管道里面会有一个方法process_item,只要写我告诉你的代码。
    • 我的错,你是对的。在这种情况下 item["images"] = item["images"][0].get("path") 就足够了,但是感谢您为我指明了正确的方向!将批准答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    相关资源
    最近更新 更多