今天在用scrapy框架运行多爬虫的时候,遇到了一个比较棘手的问题,刚开始进行了各种尝试,却还是不行,最后终于还是找到了原因!
正文
当我们在cmd中或者PyCharm中使用Terminal输入scrapy crawl lieping(lieping是我项目里的爬虫的名字,name = “lieping”,爬取猎聘网的职位信息),总会报如下的错误:
E:\Study\Python\Codes\Spiders\0301\job_spider>scrapy crawl lieping
Scrapy 1.5.0 - no active project
Unknown command: crawl
Use “scrapy” to see available commands
原因
第一种
如果是用的cmd的话,那是应为没有cd到项目的根目录,因为crawl会去搜索cmd目录下的scrapy.cfg文件,官方文档中也进行了说明:http://scrapy-chs.readthedocs.io/zh_CN/0.24/topics/commands.html
第二种
当我们使用的PyCharm来进行运行的时候,我们所处的位置本来就是项目的根目录,而这个时候还是报错误的话,那就不是没有进入根目录的问题了,而是其他原因了……
当我们去反复查看错误语句后,我们发现那一句:“no active project”,这就说明是我们的工程有问题,于是去官方文档查看了一下我们的目录结构,并对照看来一下我的项目的结构,发现,在使用命令行startproject的时候,会自动生成scrapy.cfg,问题就出现在这里,那是因为这个项目文件中只有代码,没有配置文件,或者配置文件被移去其他位置了,导致报错。
解决办法:
找一个配置文件,修改为如下格式,
# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.io/en/latest/deploy.html
[settings]
default = **job_spider**.settings
[deploy]
#url = http://localhost:6800/
project = **job_spider**
其中的job_spider是你的项目的名字
放在项目代码的外面,注意是项目代码的外面。不确定的可以看下scrapy文档->入门教程->创建项目,其中有目录结构。
放好配置文件后,再进入Terminal执行scrapy crawl job_spider,完美抓取。
网友评论