Python中scrapy没有在main目录下运行报错如何解决?
spider main.py scrapy.cfg
shenjianlin@newdev:~/my_project/Espider(shenwei/spider_12_13)$ cd …
shenjianlin@newdev:~/my_project(shenwei/spider_12_13)$ /usr/bin/python3 /home/shenjianlin/my_project/Espider/main.py traveldaily
Scrapy 1.5.0 - no active project
Unknown command: crawl
Use “scrapy” to see available commands
我没有在 spider 目录下运行,我是在任意目录运行的这个命令
/usr/bin/python3 /home/shenjianlin/my_project/Espider/main.py traveldaily
运行这个就是报错,求人指教这是为啥?
因为我要在服务器上面配置,所以这样配的话就会报错?
Python中scrapy没有在main目录下运行报错如何解决?
这个报错通常是因为Scrapy项目结构导致的。你得在正确的目录层级下运行命令。
核心原因:Scrapy需要从项目根目录(包含scrapy.cfg文件的那个目录)运行,这样它才能正确识别项目配置和模块路径。
解决方案:
-
检查当前目录:确保你在包含
scrapy.cfg文件的目录下执行命令。比如你的项目结构是这样的:myproject/ ├── scrapy.cfg └── myproject/ ├── __init__.py ├── items.py ├── middlewares.py ├── pipelines.py ├── settings.py └── spiders/ └── __init__.py你应该在
myproject/(第一层)运行scrapy crawl spider_name。 -
使用绝对路径:如果必须在其他目录运行,可以这样:
import sys import os from scrapy.crawler import CrawlerProcess from scrapy.utils.project import get_project_settings # 添加项目根目录到Python路径 project_path = '/path/to/your/project' sys.path.append(project_path) os.chdir(project_path) # 加载项目设置 os.environ['SCRAPY_SETTINGS_MODULE'] = 'myproject.settings' settings = get_project_settings() # 导入并运行你的爬虫 from myproject.spiders.your_spider import YourSpiderClass process = CrawlerProcess(settings) process.crawl(YourSpiderClass) process.start() -
创建运行脚本:在项目根目录创建一个
run.py:from scrapy.crawler import CrawlerProcess from scrapy.utils.project import get_project_settings from myproject.spiders.your_spider import YourSpiderClass process = CrawlerProcess(get_project_settings()) process.crawl(YourSpiderClass) process.start()然后直接运行
python run.py。
一句话建议:确保在scrapy.cfg所在目录运行命令,或者用Python脚本明确指定项目路径。
忍不住补充一下,为什么不去 scrapy.cfg 所在目录运行,why?why?why?
我要在服务器上面配置啊,你这个 scrapy list 是在 scrapy.cfg 目录运行?
就是别人写好了一个东西,我要在服务器上面部署,直接绝对路径如何运行成功
scrapy list scrapy crawl spidername
- cd 到当前目录可以运行;
2. scrapy crawl spidername ----> scrpay 的路径(比如 /usr/bin/scrapy ) crawl spidername
两种方式试一下。

