Es liegt eine Kraft darin, zusammengehörige Informationen zu präsentieren, insbesondere wenn diese Informationen von Websites stammen, die Sie bereits kennen, denen Sie vertrauen und die Sie verwenden … Meinen Sie nicht? Inhaltsaggregation ist der Prozess, verschiedene Inhalte an einem Ort zusammenzufassen, damit der Benutzer alles finden kann, was er braucht, ohne sich danach umsehen zu müssen. Es ist eine bessere Option, als endlos durch viele verschiedene Websites zu scrollen und zu versuchen, die relevanten Informationen auszusortieren. In diesem Artikel erfahren Sie, wie Sie eine einfache, angepasste News-Aggregator-Site mit Python von Grund auf neu erstellen. Wir werden ein einfaches Tutorial durchgehen, das sicherstellt, dass Sie am Ende dieses Artikels eine voll funktionsfähige News-Aggregator-Site mit Python haben werden.

Was ist ein Inhaltsaggregator?

Ein Inhaltsaggregator ist wie eine Speisekarte in einem Restaurant. Es liefert Ihnen verschiedene Artikel oder Pressemitteilungen direkt mit einem einzigen Klick auf ihrer Website, sodass Sie sich keine Gedanken darüber machen müssen, mehrere Informationsquellen zu suchen, nur um das zu bekommen, was Sie wollen. Inhaltsaggregatoren organisieren mehrere Artikel und Pressemitteilungen und andere Medien wie Blogbeiträge, Nachrichtenartikel, Produktbeschreibungen usw. in einem praktischen Bereich und stellen sie alle zur Ansicht zur Verfügung. Wenn Sie also jetzt lesenswerte Nachrichten haben, müssen Sie nicht mehr müssen Sie sich die Mühe machen, von Seite zu Seite zu gehen, um es zu finden!

der Bedarf

  1. Django
  2. BeatifulSoup
  3. Requests Module

Hinweis: Wir werden dieses gesamte Projekt in Django erstellen, einem Python-Framework, das speziell für die Webentwicklung entwickelt wurde. Obwohl ich im Folgenden erklären würde, was ich tue, wäre es am besten, wenn Sie vorher etwas darüber wissen.

Einrichten des Projekts

Zu Beginn müssen wir zuerst das Django-Framework installieren, das installiert werden kann über:

pip install django

Um das Projekt zu starten, führen Sie den folgenden Befehl aus:

django-admin startproject content_aggregator

Nachdem Sie den obigen Befehl ausgeführt haben, gehen Sie in das Projektverzeichnis und führen Sie den folgenden Befehl aus, um eine Django-Anwendung zu erstellen:

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

Gehen Sie mit einer IDE zum Ordner content_aggregator und öffnen Sie content_aggregator/settings.py und gehen Sie zum Abschnitt „INSTALLED_APPS“ und fügen Sie den Namen der Anwendung wie unten gezeigt hinzu:

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

Fügen Sie außerdem das Verzeichnis TEMPLATE hinzu, damit Ihre Vorlage ordnungsgemäß funktioniert.

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',
            ],
        },
    },
]

Öffnen Sie die Datei content_aggregator/urls.py und nehmen Sie die folgenden Änderungen vor:

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

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

Scraping der Websites

Um die Daten für die Aggregation zu erhalten, haben wir ein eigenes Verfahren namens Web Scraping verwendet. Web Scraping ist eine Möglichkeit, Daten aus einer bestehenden Website zu extrahieren. Um die Site zu kratzen, haben wir die Module „Requests“ und „BeautifulSoup“ verwendet. Diese Module sind äußerst hilfreich, wenn es darum geht, Websites zu durchsuchen oder zu durchsuchen und Informationen zu extrahieren. In diesem Fall werden wir Artikel aus der Times of India und theonion extrahieren, indem wir diese beiden Python-Module verwenden.

Wir können damit beginnen, auf die Zwiebel oder eine andere Website zu gehen, die Sie vielleicht möchten, der Prozess wird genau derselbe sein.

Befolgen Sie diese Schritte, um fortzufahren:

  1. Öffnen Sie die Website und gehen Sie zu den Entwicklertools, indem Sie die Taste F12 drücken oder durch das Seitenmenü navigieren und etwas auf der rechten Seite oder unten im Browser sollte angezeigt werden, das sind die Entwicklertools.Press Ctrl (or command) +Shift+C keys or click on the button with the arrow on the box in the top left corner.
  2. Navigieren Sie zum Container des Artikels, der in den meisten Fällen ein div sein sollte, klicken Sie darauf und es würde auf der rechten Seite angezeigt, wo Sie seine Klasse sehen können.

Das Ganze soll so aussehen:

Hier können wir sehen, dass die Überschrift des Artikels als h4 gespeichert ist. Jetzt können wir dies verwenden, um die benötigten Daten zu erhalten.

Ansichten schreiben

Hier ist nun der Hauptteil der Codierung, hier müssen wir importieren, verwalten und einrichten, wie die Dinge in diesem Projekt funktionieren.

Um die beiden Python-Module zu installieren, über die wir zuvor gesprochen haben, d. H. Requests und Beautifulsoup-Module, können Sie die folgenden Befehle ausführen:

pip install bs4
pip install requests

Nach der Installation beider Pakete können wir mit der Arbeit an den Ansichten beginnen:

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})

Vorlagen schreiben

Der nächste Schritt besteht darin, ein Vorlagenverzeichnis und die Datei index.html zu erstellen, die so aussehen sollte.

<!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>

Ausgabe

Jetzt, da alles erledigt ist, können wir das Projekt ausführen, aber zuerst müssen wir einige Dinge erledigen. Führen Sie die beiden folgenden Befehle aus, um das gesamte Projekt zu kompilieren:

python manage.py makemigrations
python manage.py migrate

Jetzt können wir das Projekt starten, indem wir:

python3 manage.py runserver

Und Sie sollten eine Antwort wie diese sehen:

Gehen Sie zu http://127.0.0.1:8000/, um zu sehen, ob es funktioniert hat oder nicht, und wenn es funktioniert hat, würde es ungefähr so ​​aussehen:

Letzte Worte

Damit haben Sie eine einfache News-Aggregator-Site mit zwei Sites, die Python verwendet. Es kann einfach geändert werden, um zwei beliebige Websites zu nehmen und ihre Überschriften auf einer Seite zu platzieren. Sie können der Liste Ihre eigenen Sites hinzufügen, indem Sie den Code ändern. Sie können auch nach zusätzlichen Funktionen suchen, indem Sie mehr Daten wie URLs und Bilder auslesen. Dies würde Ihnen helfen, Ihre Fähigkeiten zu verbessern und zu lernen, wie das Web funktioniert.