[PYTHON] Recevez des nouvelles de chacune des trois principales entreprises de téléphonie mobile en utilisant Django et l'API News

introduction

Je suis nouveau dans la programmation, j'espère donc que vous lirez cet article avec des yeux chaleureux.

environnement

Windows10 Python 3.7.6 newsapi-python 0.2.6 Django 3.0.6 DateTime 4.3

Le nom du répertoire au moment de la création est le suivant.

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

Présentation de l'API News

Accédez au site NewsAPI (https://newsapi.org/) et entrez votre adresse e-mail pour obtenir la clé API et noter la clé API. Utilisez ensuite pip pour installer la bibliothèque NewsAPI.

pip install newsapi-python

Ajoutez le code suivant à setting.py dans sample_news pour utiliser l'API News. Pour api_key, entrez la clé que vous avez notée.

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

Vous pouvez désormais utiliser l'API News.

Créer une application d'actualités

Paramètres de routage

Ajoutez le code suivant à urls.py dans sample_news pour configurer le routage.

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

Ensuite, j'ai créé urls.py dans les actualités et entré le code suivant.

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")
]

Recevez des actualités avec l'API News

Il y a deux façons d'obtenir les meilleures nouvelles dans l'API News et d'obtenir les nouvelles pour une certaine période dans le passé.

Quand j'ai eu les meilleures nouvelles, rien n'était affiché s'il n'y avait pas de nouvelles, alors j'ai adopté la méthode pour obtenir les nouvelles pendant un certain temps. L'API News vous permet d'obtenir des actualités jusqu'à 30 jours à l'avance si vous ne facturez pas.

Cette fois, j'ai spécifié le mot-clé, la période, l'ordre d'affichage et le nombre d'actualités. Il existe également des mots-clés de titre, des sources, des domaines, des langues (le japonais n'est pas autorisé), etc.

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

Maintenant que le programme d'acquisition de nouvelles est terminé, il ne vous reste plus qu'à l'enduire.

Afficher les nouvelles acquises

Cette fois, la page du haut (index.html), la page qui affiche les news de docomo (docomo.html), la page qui affiche les news (au.html) et la page qui affiche les news de softbank (softbank.html) 4 J'ai créé 5 fichiers html, une page et la partie commune à chaque page (base.html).

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

La page qui affiche les actualités de Docomo est la suivante.

Cette fois, le titre, l'url et l'image d'actualité sont acquis et affichés.

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

Écrivez des fichiers html au et Softbank comme celui-ci.

Enfin, le codage avec CSS est terminé.

haut de page newstop.PNG

Page d'actualités Docomo docomo.PNG

Résumé

C'est la première application Web que j'ai créée après avoir étudié django, je l'ai donc créée en utilisant de nombreux livres de référence. Après avoir étudié, j'ai senti que je pouvais approfondir ma compréhension en créant ma propre application Web pour me venger.

Le mot de recherche a été effectué par docomo pour docomo, au pour au et softbank pour softbank, mais seules les nouvelles docomo ont été produites pour docomo, mais les nouvelles d'outre-mer ont été publiées pour au et les nouvelles de baseball pour softbank. Depuis qu'il a été fait, je voudrais l'améliorer.

De plus, comme c'est la première fois que j'écris un article, je vous serais reconnaissant si vous pouviez me faire savoir s'il y a quelque chose que vous ne pouvez pas atteindre.

référence

Recommended Posts

Recevez des nouvelles de chacune des trois principales entreprises de téléphonie mobile en utilisant Django et l'API News
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
Obtenez la météo en utilisant l'API et laissez Raspberry Pi parler!
Obtenez l'adresse à partir de la latitude et de la longitude
Récupérez uniquement le texte du formulaire Django.
Utilisez l'API Spotify pour obtenir toutes les chansons des informations sur les chansons d'Arashi et vérifier l'index
Obtenez le titre de Yahoo News et analysez les sentiments
[Python] Récupérez le texte de la loi à partir de l'API e-GOV law
Envoyez et recevez Gmail via l'API Gmail en utilisant Python
Obtenez des commentaires et des abonnés avec l'API de données YouTube
[Django 2.2] Trier et obtenir la valeur de la destination de la relation
Récupérer des fichiers depuis Linux en utilisant paramiko et scp [Python]
Remarque DJango: depuis le début (Simplification et fractionnement d'URLConf)
Obtenez votre fréquence cardiaque à partir de l'API fitbit en Python!
Obtenez des données à l'aide de l'API du ministère des Affaires intérieures et des Communications
Prédire le sexe à partir du nom à l'aide de l'API Gender et de Pykakasi en Python
Obtenez le nom du produit et le prix le plus bas à l'aide de l'API Amazon Product Advertising
J'ai essayé d'obtenir diverses informations de l'API codeforces
[Affichage de la carte] Affichez une carte à partir de l'adresse enregistrée par l'utilisateur à l'aide de l'API JavaScript de Google Maps et de l'API de géocodage!
Essayez d'utiliser l'API Twitter
Essayez d'utiliser l'API Twitter
Essayez d'utiliser l'API PeeringDB 2.0
Flux d'obtention du résultat du traitement asynchrone à l'aide de Django et Celery
[Python] Obtenir la date de mise à jour d'un article d'actualité à partir de HTML
Mémo DJango: Depuis le début (en utilisant l'écran de gestion) mon point addictif
Créez des commandes Django personnalisées et exécutez-les à partir de la ligne de commande
Obtenez le titre et la date de livraison de Yahoo! News en Python