Scrapy同时启动多个爬虫以及在pycharm中debug

方法一:

1. 在项目文件夹中新建一个commands文件夹

2. 在command的文件夹中新建一个文件 crawlall.py

3.在crawlall.py 中写一个command类,该类继承 scrapy.commands

from scrapy.commands import ScrapyCommand


class Command(ScrapyCommand):
    requires_project = True

    def syntax(self):
        return '[options]'

    def short_desc(self):
        return 'Runs all of the spiders'

    def run(self, args, opts):
        spider_list = self.crawler_process.spiders.list()
        for name in spider_list:
            self.crawler_process.crawl(name, **opts.__dict__)
        self.crawler_process.start()

方法二:

在scrapy.cfg同级新建一个py文件(这种方式启动比第三种快很多)

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings

process = CrawlerProcess(get_project_settings())

process.crawl('tengxun')
process.start()

 

方法三: 

在scrapy.cfg同级新建一个py文件

from scrapy import cmdline
import sys 
import os 
sys.path.append(os.path.dirname(os.path.abspath(__file__)))


cmdline.execute(["scrapy", "crawl", "tengxun"])

pytcharm中如何调试scarpy爬虫项目

1.直接在方法二、方法三的脚本中直接debug运行

 

2.可使用此方式

  可参考:https://www.cnblogs.com/lsdb/p/9122970.html

    1.其实就是把scarpy库中的cmdline.py复制到根项目,或者方法二、方法三中的代码写入到根目录的一个文件中

    2.然后在pycharm中edit Configurations中参考如下图填入配置信息即可进行打断点,进行debug了

Name--和上边创建的spider文件相同,我这里叫quotes_spider

Script path--选择当前项目下的cmdline.py,我这里是F:\PycharmProjects\tutorial\cmdline.py

Parameters--crawl+要调试运行的spider名称,我这里是crawl quotes

Working directory--填项目所在主目录,我这里是F:\PycharmProjects\tutorial

最后要注意点“Apply”,不要直接点“OK”

    

 

 

在服务器上使用的一个shell脚本

#!/usr/bash

# 关闭程序的方法
killProgramme(){
    while [ $# != 0 ];do #所有参数的长度
        pcount=`ps -ef |grep $1|grep -v grep |wc -l`
        if [[ ${pcount} -ge 1 ]] ; then
            kill -9 `ps -ef |grep $1|grep -v grep|awk '{print $2}'`
            echo "kill process success!"
        fi
        shift #将第一个参数弹出
    done
}

# 部署程序的方法
deploy_spider()
{
    killProgramme $1
    cd /your/project/path   #启动文件的路径,这个需要更改,当然更改为当前目录。如为当前目录,定时任务的时候会执行失败
    cat /dev/null > logs.log
    nohup /root/anaconda3/bin/scrapy crawl $1>/dev/null 2>&1 &
    echo "deploy $1 success!"
}


PS3='please select websiteSpider or updateWebsite: '
echo
select choose in "websiteSpider" "updateWebsite" "killAll" "restartAll" "showProcess"   #项目中有两个爬虫文件,所以有了多个
    do
        case ${choose} in
                websiteSpider)
                    echo "you select the websiteSpider"
                    deploy_spider "websiteSpider"
                ;;
                updateWebsite)
                    echo "you select the updateWebsite"
                    deploy_spider "updateWebsite"
                ;;
                killAll)
                    echo "you select killAll"
                    killProgramme "websiteSpider" "updateWebsite"
                ;;
                restartAll)
                    echo "you select restartAll"
                    deploy_spider "websiteSpider"
                    deploy_spider "updateWebsite"
                ;;
                showProcess)
                    echo "you select show process"
                    ps -ef |grep scrapy
                ;;
                *)
                echo "perhaps you need help!"
                ;;
        esac
    break
    done

 

posted @ 2019-08-21 23:04  阿布_alone  阅读(634)  评论(0编辑  收藏  举报
TOP