Sono molto nuovo a Python e Django. Attualmente sto esplorando usando Scrapy per raschiare i siti e salvare i dati nel database Django. Il mio obiettivo è quello di eseguire uno spider basato sul dominio fornito da un utente.Accesso ai modelli di Django con scrapy: definizione del percorso per il progetto Django
Ho scritto un ragno che estrae i dati che ho bisogno e conservarla correttamente in un file JSON al momento della chiamata
scrapy crawl spider -o items.json -t json
Come descritto nel scrapy tutorial.
Il mio obiettivo è ora ottenere lo spider con successo per salvare i dati nel database Django, e quindi lavorare su come far funzionare lo spider in base all'input dell'utente.
Sono consapevole del fatto che i vari messaggi esiste su questo argomento, come queste: i link 1 link 2 link 3
Ma avere spendere più di 8 ore per cercare di arrivare a questo lavoro, sto assumendo non sono l'unico che sta ancora affrontando problemi con questo. Per questo cercherò di raccogliere tutta la conoscenza che ho ottenuto finora in questo post, nonché di postulare sperabilmente una soluzione funzionante in un secondo momento. Per questo motivo, questo post è piuttosto lungo.
Mi sembra che ci siano due diverse soluzioni per salvare i dati nel database Django da Scrapy. Uno è quello di utilizzare DjangoItem, un altro è quello di importare direttamente i modelli (come fatto here).
Non sono completamente consapevole dei vantaggi e degli svantaggi di questi due, ma sembra che la differenza sia semplicemente l'utilizzo di DjangoItem che è solo più conveniente e più breve.
quello che ho fatto:
ho aggiunto:
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('/Users/Anders/DjangoTraining/wsgi/')
errore che sto ricevendo è:
ImportError: No module named settings
Sto pensando i' Sto definendo il percorso del mio progetto Django in modo sbagliato?
Ho anche provato la seguente:
setup_django_env('../../')
Come faccio a definire il percorso per il mio progetto Django correttamente? (se questo è il problema)
Descrizione incredibilmente dettagliata, grazie. Ha funzionato come un fascino. Ho incontrato solo un problema, ho dovuto cambiare os.environ ['DJANGO_SETTINGS_MODULE'] = 'myweb.settings' in os.environ ['DJANGO_SETTINGS_MODULE'] = 'impostazioni'. In modo che il prefisso myweb non è stato aggiunto, altrimenti non riconoscerebbe il modulo. – Splurk
Giusto. Il valore di 'DJANGO_SETTINGS_MODULE' dipende molto da come hai impostato la tua variabile path python. Ciò potrebbe essere piuttosto confuso poiché django e scrapy usano di default lo stesso nome per la directory del progetto e il pacchetto del progetto. Il percorso aggiunto a 'sys.path' dovrebbe essere il genitore della directory contenente il file' settings.py'. Ad ogni modo, sono felice che questo abbia risolto il tuo problema. – Rolando
Questa è una risposta incredibilmente completa. L'unico problema che ho avuto è stato in fase di shell scrapy, ho dovuto aggiungere 'import django django.setup()' –