Python 从Django项目中的Scrapy获取蜘蛛列表
我按照答案来获取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
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集成。
例如,在Djangosettings.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'