加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

“动态”覆盖Scrapy输出格式

发布时间:2020-12-20 13:45:35 所属栏目:Python 来源:网络整理
导读:我想在代码中覆盖spider的输出格式.我无法修改设置;我无法更改命令行.我想在__init__方法中做到这一点. 理想情况下,即使像-o /tmp/1.csv这样的东西传递给蜘蛛,新输出格式也应该有效.但如果不可能,那就通过它. 我怎样才能做到这一点? 谢谢. 解决方法 因此,您
我想在代码中覆盖spider的输出格式.我无法修改设置;我无法更改命令行.我想在__init__方法中做到这一点.

理想情况下,即使像-o /tmp/1.csv这样的东西传递给蜘蛛,新输出格式也应该有效.但如果不可能,那就通过它.

我怎样才能做到这一点?

谢谢.

解决方法

因此,您可以在蜘蛛中放置一个自定义属性,设置如何为此蜘蛛处理数据,并创建一个尊重该配置的 Scrapy item pipeline.

你的蜘蛛代码看起来像:

from scrapy import Spider


class MySpider(Spider):
    def __init__(self,*args,**kwargs):
        super(MySpider,self).__init(*args,**kwargs)
        self.data_destination = self._get_data_destination()

    def _get_data_destination(self):
         # return your dynamically discovered data destination settings here

而你的item pipeline将是这样的:

class MySuperDuperPipeline(object):
    def process_item(self,item,spider):
        data_destination = getattr(spider,'data_destination')

        # code to handle item conforming to data destination here...

        return item

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读