python - scrapy多个spider怎么指定pipeline
伊谢尔伦
伊谢尔伦 2017-04-17 17:32:42
[Python讨论组]

结构是这样的

maple/
├── __init__.py
├── items.py
├── models.py
├── pipelines.py
├── settings.py
└── spiders
    ├── news.py
    └── __init__.py

news.py

class Spider(scrapy.spiders.Spider):
    name = 'news'

class BsSpider(scrapy.spiders.Spider):
    name = 'bsnews'

models.py(使用sqlalchemy)有News(base)BsNews(base)两个表
items.pyNewsItem(scrapy.Item)BsNewsItem(scrapy.Item)
请教pipelines.py应该怎么写?
只有一个Spider时,scrapy crawl news

       def process_item(self, item, spider):
        exsit_url = self.session.query(News.url).\
            filter_by(url=item['url']).first()
        if not exsit_url:
            news = News()
            news.title = item['title']
            news.url = item['url']
            news.time = item['time']
            news.content = item['content']
             self.session.add(news)
             self.session.commit()

能够正常运行
现在我要运行scrapy crawl bsnews如何指定存储的表为BsNews?
第一次接触scrapy,求大神解答
具体源码

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
PHP中文网

你可以在 pipeline 里判断是哪个爬虫的结果:

def process_item(self, item, spider):
    if spider.name == 'news':
        #这里写存入 News 表的逻辑
        news = News()
        ...(省略部分代码)
        self.session.add(news)
        self.session.commit()
     elif spider.name == 'bsnews':
        #这里写存入 News 表的逻辑
        bsnews = BsNews()
        ...(省略部分代码)
        self.session.add(bsnews)
        self.session.commit()
        
      return item

对于这种多个爬虫在一个工程里的,需要不同爬虫在 pipeline 里使用不同逻辑的问题 scrapy 的作者是这么解释的。
去看看

PHP中文网

stackoverflow看到的,直接为每个spider定义不同的pipeline
http://stackoverflow.com/a/34...

down vote
Just remove all pipelines from main settings and use this inside spider.

This will define the pipeline to user per spider

class testSpider(InitSpider):

name = 'test'
custom_settings = {
    'ITEM_PIPELINES': {
        'app.MyPipeline': 400
    }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号