菜鸟写Python-Pycharm执行Scrapy项目报:Scrapy-no active project 和(或)Unknown command: crawl错误

菜鸟写Python:Pycharm执行Scrapy项目报:Scrapy-no active project 和(或)Unknown command: crawl错误

Scrapy和寻常的py文件不同,它不能直接在编辑器中通过run来运行,究其原因是因为 Scrapy 是通过 Scrapy 的解释器 scrapy.exe 完成的(通常的python文件是通过python.exe编译的),因而官方出的执行命令是  " scrapy crawl 项目spider名 ".

1.执行scrapy项目的方法

1)命令方式执行:找到项目所在的工作跟目录(根目录下包含爬虫配置文件 scrapy.cfg,即开始通过scrapy startproject 项目,生成项目所在的目录中),通过cmd命令,在命令窗口执行 : scrapy crawl 项目;如:

2)pycharm编辑器执行scrapy项目:(重点)

如前文所述,编辑器Pycharm无法直接的执行scrapy项目,它同样需要借助scrapy crawl spider命令来执行项目,因此,我们就需要借助sys系统包通过execute来执行这条命令(等同于在cmd中执行scrapy crawl spider)。在Pycharm构建执行Scrapy的cmdline通过需要掌握两个关键点:

①保证execute是在项目的根目录执行-----------》因此需要确定文件的地址

②在文件中构建scrapy crawl spider命令

(1)新建main.py文件

掌握上面两个关键点后,我们在scrapy.cfg所在的目录新建一个执行文件,如main.py(命名随意,你也可以命成cmdline.py)。在scrapy.cfg处新建文件是因为,我们的scrapy上一级就是根目录所在的位置,这样方便我们寻址,保证execute在根目录上执行。

(2)导入依赖包:

from scrapy.cmdline import execute
#excute 执行scrapy命令
import os  # 用来设置路径
import sys   # 调用系统环境,就如同cmd中执行命令一样

(3)根据上面的要点1配置执行路径,很关键,我们一定要找到根目录的路径;

sys.path.append(os.path.dirname(os.path.abspath(__file__)))

# os.path.abspath(__file__)  获取当前文件所在的路径
# os.path.dirname(os.path.abspath(__file__))  #获取当前路径的上级(父级路径)
# os.path.dirname('D:\codeworkplace\python\JobArticleSpider\main.py')   
# sys.path.append() 设置添加项目工程所在的路径,让编译器知道是哪个项目要执行  路径设置两种方法:1.绝对路径 2.相对路径,获取当前项目所在系统的对应目录

(4)通过sys.path.append()添加根目录后,我们就满足了路径的要求,现在我们只需要想cmd中一样执行scrapy crawl spider就行,代码怎么写?通过最开始import的execute包来执行。

execute(["scrapy", "crawl", "zhihu"])  # 这样一行代码就可以了

(5)通过写main.py文件后我们就通过run main.py来运行我们的scrapy文件了,如果我们新建了爬虫文件 scrapy genspider jobbole,我们只要在main文件中在新加一个:execute(["scrapy", "crawl", "jobbole"])  语句即可。

(6)到了这一步,代码部分是已经完成了,但是你执行文件仍有可能保错;

一般报的错误类型是Scrapy-no active project 和(或)Unknown command: crawl错误。这个错误,原因有两个:

一、是可能你设置的路径不是项目的根目录;

二、编辑器变的工作目录(Work Directory)没有设置好,Work Directory需要设置成scrapy.cfg所在的路径如图。

网上,也有网友说,出现这个错误的原因是没有scrapy.cfg文件,这个情况一般是下面人家的demo丢失了.cfg文件,遇到这个我们在目录下补充这个文件,即可:

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值