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 @   阿布_alone  阅读(663)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
TOP
点击右上角即可分享
微信分享提示