Est-il possible d'accéder à mes modèles django à l'intérieur d'un pipeline Scrapy, afin de pouvoir enregistrer mes données récupérées directement dans mon modèle?
Je l' ai vu ce , mais je ne comprends pas vraiment comment le configurer?
Est-il possible d'accéder à mes modèles django à l'intérieur d'un pipeline Scrapy, afin de pouvoir enregistrer mes données récupérées directement dans mon modèle?
Je l' ai vu ce , mais je ne comprends pas vraiment comment le configurer?
Si quelqu'un d'autre a le même problème, c'est comme ça que je l'ai résolu.
J'ai ajouté ceci à mon fichier 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/')
Remarque: le chemin ci-dessus est vers votre dossier de projet django, pas le fichier settings.py.
Maintenant, vous aurez un accès complet à vos modèles django dans votre projet scrapy.
La solution inverse (configuration de scrapy dans une commande de gestion django):
# -*- 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:])
et dans settings.py de django:
import os
os.environ['SCRAPY_SETTINGS_MODULE'] = 'scrapy_project.settings'
Puis au lieu de scrapy foo
exécutez ./manage.py scrapy foo
.
UPD : correction du code pour contourner l'analyse des options de django.
Ajoutez DJANGO_SETTINGS_MODULE env dans les paramètres de votre projet scrapy.py
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'your_django_project.settings'
Vous pouvez maintenant utiliser DjangoItem dans votre projet scrapy.
Éditer:
Vous devez vous assurer que le your_django_project
projets settings.py
est disponible dans PYTHONPATH
.
Pour Django 1.4, la disposition du projet a changé. Au lieu de /myproject/settings.py, le module de paramètres se trouve dans /myproject/myproject/settings.py.
J'ai également ajouté le répertoire parent de path (/ myproject) à sys.path pour le faire fonctionner correctement.
def setup_django_env(path):
import imp, os, sys
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)
# Add path's parent directory to sys.path
sys.path.append(os.path.abspath(os.path.join(path, os.path.pardir)))
setup_django_env('/path/to/django/myproject/myproject/')
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.