Sto utilizzando Scrapy, in particolare la classe CrawlSpider
di Scrapy per analizzare i collegamenti Web che contengono determinate parole chiave. Ho una lista abbastanza lunga di start_urls
che ottiene le sue entrate da un database SQLite connesso a un progetto Django. Voglio salvare i collegamenti web raschiati in questo database.Come accedere a un start_url specifico in Scrapy CrawlSpider?
Ho due modelli Django, uno per gli URL di inizio, come http://example.com
e una per i collegamenti web raschiate come http://example.com/website1
, http://example.com/website2
ecc Tutti i link web raschiate sono siti secondari di una delle URL di inizio nella lista start_urls
.
Il modello di collegamenti Web ha una relazione molti-a-uno con il modello di URL di avvio, ovvero il modello di collegamenti Web ha una Chiave straniera per il modello di URL iniziale. Per salvare correttamente i miei collegamenti web raschiati al database, devo dire al metodo che inizia l'url a cui appartiene il collegamento web raschiato. Come lo posso fare? La classe DjangoItem
di Scrapy non aiuta in questo senso poiché devo ancora definire esplicitamente l'url di avvio utilizzato.
In altre parole, come posso passare l'url di avvio correntemente utilizzato al metodo parse_item()
, in modo che sia possibile salvarlo insieme ai collegamenti web raschiati appropriati al database? Qualche idea? Grazie in anticipo!
Puoi avere il campo start_url nella stessa tabella della tabella weblinks (come nel DjangoItem che stai utilizzando)?Certo, creerà una denormalizzazione ridondante, ma se vuoi evitare di chiamare esplicitamente, questo potrebbe aiutare. – zubinmehta