Il y a du pouvoir à présenter ensemble des informations connexes, en particulier lorsque ces informations proviennent de sites que vous connaissez déjà, auxquels vous faites confiance et que vous utilisez… Vous ne pensez pas ? L’agrégation de contenu est le processus consistant à rassembler différents contenus en un seul endroit afin que l’utilisateur puisse trouver tout ce dont il a besoin sans avoir à le chercher. C’est une meilleure option que de parcourir sans cesse de nombreux sites Web différents et d’essayer d’éliminer les informations pertinentes. Dans cet article, vous allez apprendre à créer un site d’agrégation de nouvelles simple et personnalisé en utilisant python à partir de rien. Nous allons parcourir un didacticiel simple qui garantira qu’à la fin de cet article, vous disposerez d’un site d’agrégateur de nouvelles entièrement fonctionnel utilisant Python.

Qu’est-ce qu’un agrégateur de contenu ?

Un agrégateur de contenu est comme un menu de restaurant. Il vous propose différents articles ou communiqués de presse en un seul clic sur leur site, vous n’avez donc pas à vous soucier de rechercher plusieurs sources d’informations juste pour obtenir ce que vous voulez. Les agrégateurs de contenu organisent plusieurs articles et communiqués de presse et autres médias tels que des articles de blog, des articles de presse, des descriptions de produits, etc., dans une zone pratique et les rendent tous disponibles pour consultation, alors maintenant, lorsque vous avez des nouvelles qui valent la peine d’être lues, vous n’êtes plus avoir à se donner la peine d’aller de site en site pour essayer de le trouver !

Conditions

  1. Django
  2. BelleSoupe
  3. Module de demandes

Remarque : Nous allons réaliser tout ce projet dans Django, qui est un framework python spécialement conçu pour le développement Web, même si j’expliquerais ce que je fais au fur et à mesure, il serait préférable que vous ayez des connaissances à ce sujet au préalable.

Configuration du projet

Pour commencer, nous devrons d’abord installer le framework Django, qui peut être installé via :

pip install django

Pour démarrer le projet, exécutez la commande suivante :

django-admin startproject content_aggregator

Après avoir exécuté la commande ci-dessus, allez dans le répertoire du projet et exécutez la commande suivante pour créer une application Django :

cd content_aggregator  #you can go to the project directory using this command
python manage.py startapp aggregator

Accédez au dossier content_aggregator à l’aide d’un IDE et ouvrez content_aggregator/settings.py et accédez à la section « INSTALLED_APPS » et ajoutez le nom de l’application comme indiqué ci-dessous :

INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'aggregator'  #<-- here
]

Ajoutez également le répertoire TEMPLATES pour que vos modèles fonctionnent correctement.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],  #<-- here
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

Ouvrez le fichier content_aggregator/urls.py et apportez les modifications suivantes :

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('/', include('aggregator.urls')),
]

Gratter les sites Web

Pour obtenir les données à agréger, nous avons utilisé notre propre méthode appelée web scraping. Le scraping Web est un moyen d’extraire des données d’un site Web existant. Pour gratter le site, nous avons utilisé les modules requests et beautifulsoup. Ces modules sont extrêmement utiles lorsque vient le temps d’explorer ou de parcourir des sites Web et d’extraire des informations. Dans ce cas, nous allons extraire des articles du Times of India et de theonion en utilisant ces deux modules Python.

Nous pouvons commencer par aller sur theonion ou sur n’importe quel site Web que vous pourriez souhaiter, le processus sera exactement le même.

Suivez ces étapes pour continuer :

  1. Ouvrez le site Web et accédez aux outils de développement en appuyant sur le bouton F12 ou en naviguant dans le menu latéral et quelque chose sur le côté droit ou en bas du navigateur devrait s’afficher, ce sont les outils de développement.
  2. Appuyez sur les touches Ctrl (ou commande) + Maj + C ou cliquez sur le bouton avec la flèche sur la case dans le coin supérieur gauche.
  3. Naviguez sur le conteneur de l’article qui devrait être un div dans la plupart des cas, cliquez dessus et il s’affichera sur le côté droit où vous pouvez voir sa classe.

L’ensemble devrait ressembler à ceci :

Ici, nous pouvons voir que le titre de l’article est stocké au format h4. Nous pouvons maintenant l’utiliser pour obtenir les données dont nous avons besoin.

Ecrire les vues

Voici maintenant la partie principale de codage, ici nous devrons importer, gérer et configurer la façon dont les choses fonctionneront dans ce projet.

Pour installer les deux modules Python dont nous avons parlé plus tôt, c’est-à-dire les modules requests et beautifulsoup, vous pouvez exécuter les commandes suivantes :

pip install bs4
pip install requests

Après avoir installé les deux packages, nous pouvons commencer à travailler sur les vues :

import requests
from django.shortcuts import render
from bs4 import BeautifulSoup 
toi_r = requests.get("https://timesofindia.indiatimes.com/briefs")
toi_soup = BeautifulSoup(toi_r.content, "html.parser")

toi_headings = toi_soup.find_all('h2')

toi_headings = toi_headings[0:-13] # removing footers

toi_news = []

for th in toi_headings:
    toi_news.append(th.text)



#Getting news from theonion

ht_r = requests.get("https://www.theonion.com/")
ht_soup = BeautifulSoup(ht_r.content, "html.parser")
ht_headings = ht_soup.find_all('h4')
ht_headings = ht_headings[2:]
ht_news = []

for hth in ht_headings:
    ht_news.append(hth.text)


def index(req):
    return render(req, 'index.html', {'toi_news':toi_news, 'ht_news': ht_news})

Modèles d’écriture

La prochaine étape consistera à créer un répertoire de modèles et à créer le fichier indet.html et il devrait ressembler à ceci.

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</head>
<body>
    <div class="jumbotron">
        <center><h1>Content Aggregator</h1>
          <a href="/" class="btn btn-danger">Refresh News</a>
        </form>
    </center>
    </div>
    <div class="container">
        <div class="row">
            <div class="col-6">
                    <h3 class="text-centre"> News from Times of india</h3>
                    {% for n in toi_news %}
                    <h5> -  {{n}} </h5>
                    <hr>
                    {% endfor %}
                    <br>
            </div>
            <div class="col-6">
                    <h3 class="text-centre">News from theonion </h3>
                    {% for htn in ht_news %}
                    <h5> - {{htn}} </h5>
                    <hr>
                    {% endfor %}
                    <br>
            </div>
        </div>


</div>
    <script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
    crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
</body>
</html>

Sortir

Maintenant que tout est fait, nous pouvons lancer le projet, mais d’abord, nous devons d’abord faire certaines choses. Exécutez les deux commandes suivantes pour compiler l’ensemble du projet :

python manage.py makemigrations
python manage.py migrate

Maintenant, nous pouvons démarrer le projet en :

python3 manage.py runserver

Et vous devriez voir une réponse comme celle-ci :

Accédez à http://127.0.0.1:8000/ pour voir si cela a fonctionné ou non. Si tel était le cas, cela ressemblerait à ceci :

Derniers mots

Voilà, avec cela, vous avez un simple site d’agrégateur de nouvelles à deux sites utilisant Python. Il peut être simplement modifié pour prendre deux sites et mettre leurs titres sur une seule page. Vous pouvez ajouter vos propres sites à la liste en modifiant le code. Vous pouvez également chercher à ajouter des fonctionnalités en grattant plus de données telles que les URL et les images. Cela vous aiderait à améliorer vos compétences et vous aiderait à apprendre comment fonctionne le Web.

Voici quelques tutoriels utiles que vous pouvez lire :