Я написал скрипт в py-файле для удаления данных с веб-сайта https://www.dataquest.io/blog/ (только для целей обучения), который работает отлично. Утилизация всех данных, как я хочу.
Я представляю этот файл скрипта в приложении Django как ScrapperApp.
Я хочу сохранить все очищенные данные в базе данных.
После запуска сервера и выполнения скрипта.
Веб-страница просто загружается как есть. Но база данных показывает только один экземпляр данных с веб-сайта.
scrape.py
from bs4 import BeautifulSoup
import requests
src = 'https://www.dataquest.io/blog/'
source = requests.get(src).text
soup = BeautifulSoup(source, 'lxml')
total = 0
for article in soup.find('section', class_='bSe right').find_all('article'):
try:
headline = article.find('h2', class_='entry-title').text
print('Heading : ', headline)
summary = article.find('p').text
print('Summary: ',summary)
category = article.find('div', class_='category').find('span').text
print(category)
blog_link = article.find('div', class_='awr').find('a', class_='psb')['href']
print(blog_link)
total += 1
except exception as e:
pass
print()
print(total)
models.py
from django.db import models
class BlogCards(models.Model):
headline = models.CharField(max_length=500, blank=True)
category = models.CharField(max_length=300, blank=True)
summary = models.TextField(blank=True)
link = models.URLField(blank=True)
total_blogs = models.IntegerField()
def __str__(self):
return self.headline
views.py из Django ScrapperApp
from django.shortcuts import render
from bs4 import BeautifulSoup
import requests
from .models import BlogCards
import logging
def ScrapperView(request):
src = 'https://www.dataquest.io/blog/'
source = requests.get(src).text
soup = BeautifulSoup(source, 'lxml')
total_blogs = 0
for article in soup.find('section', class_='bSe right').find_all('article'):
blog_card = BlogCards()
headline = article.find('h2', class_='entry-title').text
blog_card.headline = headline
summary = article.find('p').text
blog_card.summary = summary
category = article.find('div', class_='category').find('span').text
blog_card.category = category
blog_link = article.find('div', class_='awr').find('a', class_='psb')['href']
blog_card.link = blog_link
total_blogs += 1
blog_card.total_blogs = total_blogs
logging.basicConfig(filename='blogcards.log', level=logging.INFO)
blog_card.save()
return render(request, 'scrapper/scrapper.html')
База данных, показывающая единственный экземпляр сохраненных очищенных данных
как заголовок, категория, резюме и ссылка только первого блога.
Отдых не сохраняется в базе данных.
Я ожидаю, что выходные данные будут иметь все данные в базе данных.
Я знаю, что что-то упустил, так как я новичок в Django. Я не могу это настроить.
Спасибо