Estoy tratando de crear una aplicación Django que funcione como una especie de tienda. Los elementos se eliminan de Internet y actualizan la base de datos del proyecto Django de forma continua a lo largo del tiempo (por ejemplo, cada dos o tres días). Estoy usando el marco de Scrapy para realizar raspado, y aunque hay un DjangoItem feature experimental, preferiría mantenerme alejado de él porque es inestable.¿Cuál es la mejor forma de exportar continuamente información de un rastreador de Scrapy a una base de datos de aplicaciones de Django?
En este momento mi plan es la creación de archivos XML de elementos rastreados con XMLItemExporter
(docs) here de Scrapy, y las usará para loaddata
en el proyecto de Django como accesorios XML (docs here). Esto parece estar bien porque si uno de los dos procesos se estropea, hay un intermediario de archivo entre ellos. La modularización de la aplicación como un todo tampoco parece una mala idea.
Algunas de las preocupaciones son:
- que estos archivos pueden ser demasiado grandes para leer en la memoria para Django
loaddata
. - Estoy gastando demasiado tiempo en esto cuando podría haber una solución mejor o más fácil, como exportar directamente a la base de datos, que es MySQL en este caso.
- Parece que nadie ha escrito sobre este proceso en línea, lo cual es extraño teniendo en cuenta que, en mi opinión, Scrapy es un marco excelente para conectarlo a una aplicación de Django.
- No existe una guía definitiva para la creación manual de accesorios Django en los documentos de Django; parece que está más orientada hacia el volcado y la recarga de dispositivos de la propia aplicación.
La existencia del DjangoItem experimental sugiere que Scrapy + Django es una opción bastante popular para que haya una buena solución aquí.
Agradecería mucho cualquier solución, consejo o sabiduría sobre este asunto.
Scrapy + Django y el código de canalización aquí: http://stackoverflow.com/questions/7883196/saving-django-model-from-scrapy-project – Lionel