从 Django 调用 Scrapy Spider

2024-04-16

我有一个项目,在同一工作区中包含 django 和 scrapy 文件夹:

my_project/
    django_project/
        django_project/
            settings.py
        app1/
        app2/
        manage.py
        ...
    scrapy_project/
        scrapy_project/
            settings.py
        scrapy.cfg
        ...

我已经将 scrapy 与我的 django app1 模型连接起来,因此每次运行蜘蛛时,它都会将收集的数据存储在我的 postgresql 数据库中。 这就是我的scrapy项目访问django模型的方式

#in my_project/scrapy_project/scrapy_project/settings.py
import sys
import os
import django

sys.path.append('/../../django_project')
os.environ['DJANGO_SETTINGS_MODULE'] = 'django_project.settings'
django.setup()

当我从命令行调用蜘蛛时,一切都很好,但是当我想从 django 视图或 django 中的 Celery 任务将蜘蛛作为脚本调用时,例如:

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
process = CrawlerProcess(get_project_settings())
process.crawl('spider_name')
process.start()

我收到错误:

KeyError: 'Spider not found: spider_name'

我想我应该告诉 Django Scrapy 位于哪里(就像我在 scrapy 设置中所做的那样),但我不知道如何做。 老实说,我什至不确定我为这个项目设计文件夹结构的方式是否正确。


遵循示例scrapy文档 https://docs.scrapy.org/en/latest/topics/practices.html#run-scrapy-from-a-script:

from my_projec.scrapy_project.spiders import MySpider
...
process.crawl(MySpider)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Django 调用 Scrapy Spider 的相关文章

随机推荐