PyCharm中如何执行Scrapy程序

之前写的一个scrapy项目,现在要用。发现程序执行方法都忘记了。最关键的是项目中没有readme.txt。貌似有点尴尬。可见readme.md对于项目的后续维护多么重要。

在PyCharm中发现并没有直接执行scrapy的命令。于是乎就想解决这个问题。发现使用scrapy的cmdline可以解决这个问题。
执行下面的shell脚本创建main.py或者将python内容部分拷贝到文件中。

cat > main.py << EOF
#!/usr/bin/env python3
from scrapy import cmdline
cmdline.execute("scrapy crawl websiteSpider".split())    # websiteSpider这是爬虫的名字。
EOF

当然你也可以使用这个方法:

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

process = CrawlerProcess(get_project_settings())

process.crawl('websiteSpider')
process.start()

这个时候就可以在pycharm中执行scrapy了。不过我发现当时写了一个更简单的脚本。这个在服务器上还是比较好使的。

脚本内容具体如下

#!/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
end
  • 作者:kali(作者介绍)
  • 更新时间:2022-07-20 18:09
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 转载声明:转载站点文章,请附上原文链接
  • 翻译声明:翻译文章会不严谨,请务必附上原文链接
  • 扫描阅读:扫描二维码,手机阅读该文章