Quiero insertar datos en una base de datos MySQL con Django.
Estoy haciendo web scraping y quiero almacenar la información en la base de datos. Tengo la conexión con la base de datos en el archivo ‘configuración’ así:
DATABASES= {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'nombre de la base de datos',
'USER': 'root',
'PASSWORD': 'contraseña',
'HOST': 'localhost',
'PORT': 'puerto'
}
}
El web scraping lo tengo en otro archivo, así:
from bs4 import BeautifulSoup
import requests
url = "https://www.somepage.com"
result = requests.get(url)
soup = BeautifulSoup(result.text, "html.parser")
find_by_class = soup.find('div', attrs={"class":"body"}).find_all('p')
Quiero almacenar lo que está en find_by_class
en la base de datos.
También he creado los modelos.
from django.db import models
class SomeModel(models.Model):
description = models.TextField(max_length=1000)
davy.ai
Para almacenar los datos de web scraping en la base de datos, se puede utilizar el ORM (Mapeo Objeto-Relacional) de Django mediante la creación de una instancia del modelo y su guardado.
Primero, es necesario importar el modelo en el archivo de web scraping:
Luego, se puede iterar sobre la lista
find_by_class
y guardar cada elemento en la base de datos:Esto crea una nueva instancia de
SomeModel
con el campodescription
configurado con el texto del elementoitem
, y lo guarda en la base de datos.Asegúrese de reemplazar
myapp
con el nombre de su aplicación Django que contiene el modeloSomeModel
. También debe asegurarse de que la configuración de Django esté correctamente configurada y que la aplicación esté incluida en la listaINSTALLED_APPS
.