#python #mysql #django #database #beautifulsoup
Вопрос:
Я занимаюсь веб-очисткой и хочу сохранить информацию в базе данных. У меня есть соединение с базой данных в файле «настройки», как это:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'dbname', 'USER': 'root', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': 'port' } }
Веб-соскоб у меня есть в другом файле, похожем на этот:
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')
Я хочу сохранить то, что находится в find_by_class, в базе данных.
Также я создал модели.
from django.db import models class SomeModel(models.Model): description = models.TextField(max_length=1000)
Комментарии:
1. Покажите нам, что вы пытались связать свой фрагмент кода с вашей моделью! До сих пор я не вижу никакой связи между этими двумя.
2. @КлаусД. Я попытался сделать запись
from models import SomeModel
в файле для очистки, а затем попробовал этоdescription = find_by_class
. Но, конечно, это не сработало.
Ответ №1:
Я предполагаю, что вы выполнили миграцию в базе данных (если нет, то в корневой папке вашего проекта, запустите python manage.py makemigrations
и затем python manage.py migrate
).
Теперь вам нужно использовать следующий фрагмент кода:
from bs4 import BeautifulSoup import requests from .models import SomeModel 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') for each in find_by_class: SomeModel.objects.create(description=each.text)
Комментарии:
1. Да, я сделал миграции и создал файл 0001_initial.
2. Это отображается в выводе: «ModuleNotFoundError: Нет модуля с именем «модели» »
3. Файл, содержащий отбракованный код и модели, должен находиться в той же папке приложения django. еще импортируйте модель из какого-нибудь приложения, например
from appname.models import SomeModel
4. Теперь я получаю следующее: «Импортер: попытка относительного импорта без известного родительского пакета». Попробуйте создать новый проект для проверки, и произойдет то же самое.
5. Удалите». » из моделей и получите это:
ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.