Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Django项目中的Scrapy获取蜘蛛列表_Python_Django_Scrapy - Fatal编程技术网

Python 从Django项目中的Scrapy获取蜘蛛列表

Python 从Django项目中的Scrapy获取蜘蛛列表,python,django,scrapy,Python,Django,Scrapy,我按照答案来获取Django内部我的Scrapy项目的蜘蛛列表,所以这就是结构的样子 my_app/ -- apps/ # django apps folder -- crawler/ -- __init__.py -- admin.py -- apps.py -- views.py <~ here is where the code below located -- etc.. -- my_app/ # django

我按照答案来获取Django内部我的Scrapy项目的蜘蛛列表,所以这就是结构的样子

my_app/
-- apps/  # django apps folder
   -- crawler/ 
      -- __init__.py
      -- admin.py
      -- apps.py
      -- views.py <~ here is where the code below located
      -- etc..
-- my_app/  # django project folder
   -- __init__.py
   -- asgi.py
   -- settings.py
   -- etc..
-- scraper_app/ # scrapy dir
   -- scraper_app/ # scrapy project folder
      -- spiders/
         -- abc_spider.py
      -- __init__.py
      -- middlewares.py
      -- pipelines.py
      -- settings.py
      -- etc..
   -- scrapy.cfg
-- manage.py
-- scrapyd.conf
-- setup.py
-- etc..
所以我的问题是,如何使用django或Scrapy方式(如果可用)使这些脚本也在django项目上工作?谢谢

已编辑 我刚刚意识到,当我试图从scrapy shell中的
project.get\u project\u settings()
获取值时,它将返回

'SPIDER_MODULES':['scraper_app.SPIDER']

但是当我试图从django运行它时,
SPIDER_模块
返回一个空列表

您应该将您的scraper与django集成。 例如,在Django
settings.py中:

import os
import sys
    
# DJANGO INTEGRATION
    
sys.path.append(os.path.dirname(os.path.abspath('.')))
os.environ['DJANGO_SETTINGS_MODULE'] = '<scrapper>.settings'
导入操作系统
导入系统
#DJANGO集成
sys.path.append(os.path.dirname(os.path.abspath('.'))
os.environ['DJANGO\u设置\u模块']='.SETTINGS'

我知道我问这个问题已经很久了,但我最终找到了最适合我的答案和最干净的方式,没有使用
os
模块

来自scrapy.utils导入项目
来自scrapy进口蜘蛛装载机
项目设置=项目。获取项目设置()
project_settings.set('SPIDER_MODULES',['path.to.scrapy.SPIDER']))
project_settings.set('NEWSPIDER_MODULE','path.to.scrapy.spider')
spider_loader=spiderloader.spiderloader.from_设置(项目_设置)
spider=spider_loader.list()
因此,在我的解决方案中,我只需要重新分配/替换设置对象属性

import os
import sys
    
# DJANGO INTEGRATION
    
sys.path.append(os.path.dirname(os.path.abspath('.')))
os.environ['DJANGO_SETTINGS_MODULE'] = '<scrapper>.settings'