[PYTHON] Erhalten Sie Nachrichten von jedem der drei großen Mobilfunkunternehmen mithilfe von Django und der Nachrichten-API

Einführung

Ich bin neu in der Programmierung und hoffe, dass Sie diesen Artikel mit warmen Augen lesen.

Umgebung

Windows10 Python 3.7.6 newsapi-python 0.2.6 Django 3.0.6 DateTime 4.3

Der Name des Verzeichnisses zum Zeitpunkt der Erstellung lautet wie folgt.

sample_news
├─news
├─sample_news
├─static
└─manage.py

Einführung in die News API

Gehen Sie zu News API Site und geben Sie Ihre E-Mail-Adresse ein, um den API-Schlüssel zu erhalten, und notieren Sie sich den API-Schlüssel. Verwenden Sie dann pip, um die NewsAPI-Bibliothek zu installieren.

pip install newsapi-python

Fügen Sie set.py in sample_news den folgenden Code hinzu, um die News-API zu verwenden. Geben Sie für api_key den Schlüssel ein, den Sie notiert haben.

setting.py


from newsapi import NewsApiClient

newsapi=NewsApiClient(api_key='xxxxxxxxxxxxxxxxxxxxxx')

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'news.apps.NewsConfig',
    'newsapi',
]

Sie können jetzt die Nachrichten-API verwenden.

Erstellen einer Nachrichten-App

Routing-Einstellungen

Fügen Sie den folgenden Code zu urls.py in sample_news hinzu, um das Routing zu konfigurieren.

sample_news/urls.py


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

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

Als nächstes habe ich urls.py in Nachrichten erstellt und den folgenden Code eingegeben.

news/urls.py


from django.urls import path
from.import views

app_name = 'news'
urlpatterns = [
    path('', views.IndexView.as_view(), name="index"),
    path('docomo/',views.DocomoView.as_view(),name="docomo"),
    path('au/',views.AuView.as_view(),name="au"),
    path('softbank/',views.SoftbankView.as_view(),name="softbank")
]

Erhalten Sie Nachrichten mit der Nachrichten-API

Es gibt zwei Möglichkeiten, um die wichtigsten Nachrichten in der Nachrichten-API und die Nachrichten für einen bestimmten Zeitraum in der Vergangenheit abzurufen.

Als ich die Top-Nachrichten erhielt, wurde nichts angezeigt, wenn keine Nachrichten vorhanden waren. Daher habe ich die Methode angewendet, um die Nachrichten für einen bestimmten Zeitraum abzurufen. Mit der Nachrichten-API können Sie Nachrichten bis zu 30 Tage im Voraus erhalten, wenn Sie keine Gebühren erheben.

Dieses Mal habe ich das Schlüsselwort, den Zeitraum, die Anzeigereihenfolge und die Anzahl der Nachrichten angegeben. Es gibt auch Titelschlüsselwörter, Quellen, Domänen, Sprachen (Japanisch ist nicht erlaubt) usw.

news/views.py


from django.views import generic
from newsapi import NewsApiClient
from datetime import datetime, date, timedelta

class IndexView(generic.TemplateView):
    template_name = "index.html"

class DocomoView(generic.TemplateView):
    template_name = "docomo.html"

    def get_context_data(self, **kwargs):
        context=super().get_context_data(**kwargs)
        today = date.today()
        monthago = today-timedelta(days=30)
        newsapi = NewsApiClient(api_key='e56b4ed3346745e3800bc521d085e04b')
        context['all_article']=newsapi.get_everything(q='Docomo',
                                                      from_param=monthago,
                                                      to=today,
                                                      sort_by='publishedAt',
                                                      page_size=40)
        return context

class AuView(generic.TemplateView):
    template_name = "au.html"

    def get_context_data(self, **kwargs):
        context=super().get_context_data(**kwargs)
        today = date.today()
        monthago = today-timedelta(days=30)
        newsapi = NewsApiClient(api_key='e56b4ed3346745e3800bc521d085e04b')
        context['all_article']=newsapi.get_everything(q='KDDI',
                                                      from_param=monthago,
                                                      to=today,
                                                      sort_by='publishedAt',
                                                      page_size=40)
        return context

class SoftbankView(generic.TemplateView):
    template_name = "softbank.html"

    def get_context_data(self, **kwargs):
        context=super().get_context_data(**kwargs)
        today = date.today()
        monthago = today-timedelta(days=30)
        newsapi = NewsApiClient(api_key='e56b4ed3346745e3800bc521d085e04b')
        context['all_article']=newsapi.get_everything(q='Softbank',
                                                      from_param=monthago,
                                                      to=today,
                                                      sort_by='publishedAt',
                                                      page_size=40)
        return context

Nachdem das Programm zur Nachrichtenerfassung abgeschlossen ist, müssen Sie es nur noch beschichten.

Zeigen Sie die erfassten Nachrichten an

Diesmal die oberste Seite (index.html), die Seite, auf der Docomo-Nachrichten (docomo.html) angezeigt werden, die Seite, auf der Au-Nachrichten (au.html) angezeigt werden, und die Seite, auf der Softbank-Nachrichten (softbank.html) angezeigt werden 4 Ich habe 5 HTML-Dateien erstellt, eine Seite und den Teil, der jeder Seite gemeinsam ist (base.html).

templates
├─au.html
├─base.html
├─docomo.html
├─index.html
└─softbank.html

Die Seite, auf der Docomo-Nachrichten angezeigt werden, lautet wie folgt.

Dieses Mal werden Titel, URL und Nachrichtenbild erfasst und angezeigt.

docomo.html


{% extends 'base.html' %}
{% block title %}Sample_News | SOFTBANK{% endblock %}
{% block contents %}
<div class="grid">
{% for context in all_article.articles %}
<div class="news">
    <div class="news-wrapper">
        <img class="news-img" src="{{ context.urlToImage }}" alt="">
        <a class="news-title" href="{{ context.url }}">{{ context.title }}</a>
    </div>
</div>
{% endfor %}
</div>
{% endblock %}

So schreibe ich auch Au- und Softbank-HTML-Dateien.

Schließlich ist die Codierung mit CSS abgeschlossen.

oberste Seite newstop.PNG

Docomo News Seite docomo.PNG

Zusammenfassung

Dies ist die erste Web-App, die ich nach dem Studium von Django erstellt habe, also habe ich sie mit vielen Nachschlagewerken erstellt. Nach dem Studium hatte ich das Gefühl, dass ich mein Verständnis vertiefen könnte, indem ich meine eigene Web-App für Rache mache.

Das Suchwort wurde von Docomo für Docomo, Au für Au und Softbank für Softbank erstellt, aber nur Docomo-Nachrichten wurden für Docomo ausgegeben, aber Übersee-Nachrichten wurden für Au ausgegeben und Baseball-Nachrichten wurden für Softbank ausgegeben. Da es fertig war, möchte ich es verbessern.

Da ich zum ersten Mal einen Artikel schreibe, würde ich es begrüßen, wenn Sie mich wissen lassen könnten, ob es etwas gibt, das Sie nicht erreichen können.

Referenz

Recommended Posts

Erhalten Sie Nachrichten von jedem der drei großen Mobilfunkunternehmen mithilfe von Django und der Nachrichten-API
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
Holen Sie sich das Wetter mit API und lassen Sie Raspberry Pi sprechen!
Holen Sie sich die Adresse von Längen- und Breitengrad
Holen Sie sich nur den Text aus dem Django-Formular.
Verwenden Sie die Spotify-API, um alle Songs von Arashis Songinformationen abzurufen und den Index zu überprüfen
Holen Sie sich den Titel der Yahoo News und analysieren Sie die Stimmung
[Python] Ruft den Gesetzestext aus der e-GOV-Gesetz-API ab
Senden und empfangen Sie Google Mail über die Google Mail-API mit Python
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API
[Django 2.2] Sortieren und erhalten Sie den Wert des Beziehungsziels
Holen Sie sich Dateien von Linux mit paramiko und scp [Python]
DJango Hinweis: Von Anfang an (Vereinfachung und Aufteilung von URLConf)
Holen Sie sich Ihre Herzfrequenz von der Fitbit-API in Python!
Erhalten Sie Daten mithilfe der API des Ministeriums für innere Angelegenheiten und Kommunikation
Prognostizieren Sie das Geschlecht anhand des Namens mithilfe der Gender-API und von Pykakasi in Python
Holen Sie sich den Produktnamen und den niedrigsten Preis mit der Amazon Product Advertising API
Ich habe versucht, verschiedene Informationen von der Codeforces-API abzurufen
[Kartenanzeige] Zeigen Sie eine Karte anhand der vom Benutzer registrierten Adresse mit der JavaScript-API und der Geokodierungs-API von Google Maps an!
Versuchen Sie es mit der Twitter-API
Versuchen Sie es mit der Twitter-API
Versuchen Sie es mit der PeeringDB 2.0-API
Ablauf des Ergebnisses der asynchronen Verarbeitung mit Django und Sellerie
[Python] Ruft das Aktualisierungsdatum eines Nachrichtenartikels aus HTML ab
DJango-Memo: Von Anfang an (über den Verwaltungsbildschirm) mein Suchtpunkt
Erstellen Sie benutzerdefinierte Django-Befehle und führen Sie sie über die Befehlszeile aus
Holen Sie sich den Titel und das Lieferdatum von Yahoo! News in Python