imn*_*mns 33 python django django-models scrapy
是否可以在Scrapy管道中访问我的django模型,以便我可以将我的已删除数据直接保存到我的模型中?
我已经看过这个,但我真的不知道怎么设置它?
imn*_*mns 26
如果其他人遇到同样的问题,这就是我解决它的方法.
我将此添加到我的scrapy settings.py文件中:
def setup_django_env(path):
import imp, os
from django.core.management import setup_environ
f, filename, desc = imp.find_module('settings', [path])
project = imp.load_module('settings', f, filename, desc)
setup_environ(project)
setup_django_env('/path/to/django/project/')
Run Code Online (Sandbox Code Playgroud)
注意:上面的路径是你的django项目文件夹,而不是settings.py文件.
现在,您可以完全访问scrapy项目中的django模型.
Mik*_*bov 20
相反的解决方案(在django管理命令中设置scrapy):
# -*- coding: utf-8 -*-
# myapp/management/commands/scrapy.py
from __future__ import absolute_import
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def run_from_argv(self, argv):
self._argv = argv
self.execute()
def handle(self, *args, **options):
from scrapy.cmdline import execute
execute(self._argv[1:])
Run Code Online (Sandbox Code Playgroud)
在django的settings.py中:
import os
os.environ['SCRAPY_SETTINGS_MODULE'] = 'scrapy_project.settings'
Run Code Online (Sandbox Code Playgroud)
然后而不是scrapy foo运行./manage.py scrapy foo.
UPD:修复代码以绕过django的选项解析.
Jet*_*Guo 14
在scrapy项目的settings.py中添加DJANGO_SETTINGS_MODULE env
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'your_django_project.settings'
Run Code Online (Sandbox Code Playgroud)
现在您可以在scrapy项目中使用DjangoItem.
编辑:
您必须确保your_django_project项目settings.py可用PYTHONPATH.
| 归档时间: |
|
| 查看次数: |
9637 次 |
| 最近记录: |