[Python] Totale automatiquement le nombre total d'articles publiés par Qiita à l'aide de l'API

Je veux connaître le nombre total de vues de mon article Qiita! !!

Seul le contributeur peut vérifier le nombre de vues des articles publiés par Qiita pour chaque article. Alors, ** Pour connaître le nombre total de vues de votre publication, allez dans tous les articles et calculez avec une calculatrice OK **!

c'est tout.


Je l'aurais calculé il y a exactement un an.

Cependant, cela fait un an que je suis devenu ingénieur. Une telle méthode comme une personne primitive n'est pas autorisée.

Je savais que je pouvais l'obtenir en utilisant l'API, alors j'ai cherché.

De nombreux articles ont paru, Je n'ai trouvé aucun article sur le nombre total de vues.

Enfin, comme le lien ci-dessous Je souhaite utiliser GAS pour effectuer régulièrement une agrégation automatique afin d'effectuer des analyses d'oléore.

[API Qiita] J'aime! Comptage automatique des vues ← Article incroyable

code


20190208 PostScript S'il s'agit d'exactement 100 articles, il sortira sans passer sauf J'ai ajouté.


import requests
import json
import math
from msvcrt import getch

USER_ID = 'Votre identifiant Qiita'
PER_PAGE = 20
allViews = 0

headers = {"content-type": "application/json",
           'Authorization': 'Portez votre jeton d'accès'}

#Envoyez une demande et insérez un json qui comprend le nombre total de messages
url = 'https://qiita.com/api/v2/users/' + USER_ID
res = requests.get(url, headers=headers)
json_qiita_info = res.json()

#Extraire le nombre de messages de json
items_count = json_qiita_info['items_count']

#Calculez le nombre de pages
page = math.ceil(items_count / PER_PAGE)

print('|Le titre de l'article|Nombre de vues|Comme compte|')

#Obtenez tous les articles publiés
for i in range(page):

    #Envoyez une requête et insérez un json contenant les informations de chaque article
    url = 'https://qiita.com/api/v2/authenticated_user/items' + \
        '?page=' + str(i + 1)
    res = requests.get(url, headers=headers)
    json_qiita_info = res.json()

    for j in range(PER_PAGE):
        try:
            #Extraire l'ID de json
            item_id = json_qiita_info[j]['id']

            #Envoyez une requête et insérez un json contenant le nombre de vues de l'article avec l'ID spécifié
            url = 'https://qiita.com/api/v2/items/' + str(item_id)
            res = requests.get(url, headers=headers)
            json_view = res.json()

            #Tirez le nombre de vues de json
            page_view = json_view['page_views_count']

            #Ajout et substitution pour faire le nombre total de vues
            allViews += page_view

            #Affiché dans l'ordre du titre, du nombre de likes, du nombre de vues
            print('| ' + json_qiita_info[j]['title'] + ' | ' +
                  str(json_qiita_info[j]['likes_count']) + ' |' +
                  str(page_view) + ' |')

        except IndexError:
            print('Afficher le total:' + str(allViews))
            print('Sortie terminée')
            getch()
            break

#S'il s'agit d'exactement 100 articles, il se terminera sans passer sauf
print('Afficher le total:' + str(allViews))
print('Sortie terminée')
getch()

Résultat d'exécution

QiitaView.gif

Le titre, le nombre de likes et le nombre de vues de chaque article sont affichés, et enfin le nombre total de vues est don! est.

Partie obstruée

Le nombre de vues ne peut pas être obtenu uniquement par requête GET

Lors de mon enquête, ** "J'ai pu obtenir les informations de l'article uniquement avec une requête GET sans jeton d'accès!" ** Parce qu'il y avait des informations qui ** J'ai pensé: "Le nombre de vues ne peut être complété que par une requête GET qui n'utilise pas de jeton d'accès." **.

Aussi, dans le document officiel de Qiita API v2 (GET / api / v2 / items), la valeur qui existe dans le champ Il y avait un "" page_views_count ", donc je l'ai eu et j'ai fini. .. .. J'ai pensé, mais cela n'a pas fonctionné.

Aucun ne sera retourné comme indiqué dans l'image. QiitaView.PNG

Si vous y réfléchissez bien, le nombre de vues de chaque article ne peut être confirmé que par la personne qui a écrit l'article. Il était naturel de dire qu'il n'était pas possible de l'obtenir avec une simple demande GET.

Comment obtenir le nombre correct de vues ** Utilisez le corps de la requête, y compris le jeton d'accès dans la requête GET ** Je l'ai compris avec la reconnaissance que c'était. (* La reconnaissance de cette zone est ambiguë, veuillez donc signaler toute erreur.)


Ci-dessous, cité de la documentation officielle de Qiita API v2

Paramètres Les requêtes adressées à l'API v2 utilisent cinq types de méthodes HTTP: GET, POST, PUT, PATCH et DELETE. Les requêtes adressées à de nombreuses API peuvent inclure des paramètres, mais si vous souhaitez inclure des paramètres dans une requête GET, utilisez une requête URI, sinon utilisez un corps de requête. Il existe deux types de paramètres, l'un qui est passé arbitrairement, par exemple à des fins de nation de page, et l'autre qui est essentiel, comme le texte lors de la publication. La documentation de l'API décrit les paramètres qui peuvent être envoyés pour chaque API.

pagination

Jusqu'à ce que j'utilise l'API, j'étais dans un état de "qu'est-ce que la pagination?" J'ai passé du temps.

Comme le mot pung ** Retournez le livre et recherchez les informations sur cette page ** Cela signifie qu'il est nécessaire d'implémenter le ** retournement de livre ** ... du processus.

   #Envoyez une requête et insérez un json contenant les informations de chaque article
    url = 'https://qiita.com/api/v2/authenticated_user/items' + '?page=' + str(i + 1)
    res = requests.get(url, headers=headers)
    json_qiita_info = res.json()

Les parties correspondant à la pagination sont présentées séparément pour une meilleure compréhension. C'est là que ``? Page = '+ str (i + 1) `. Il s'agit simplement d'envoyer une requête à la page avec l'index spécifié.

Spécifier par chaîne de caractères

J'ai passé le plus de temps là-dessus. Vous ne remarquerez peut-être pas qu'il contient un espace vide demi-largeur, Il manque un \ à la fin de la chaîne. .. .. Il était difficile d'obtenir une erreur. De plus, puisque la chaîne de caractères est hors de la plage de correction de la fonction d'indentation automatique Il m'a fallu beaucoup de temps pour remarquer l'erreur en premier. .. ..

Liens que j'ai utilisés comme référence

Essayez d'utiliser l'API Qiita de Python Obtenez une liste de messages à l'aide de l'API Qiita v2 [Python] Obtenez une liste de messages à l'aide de l'API Qiita + Rétrospective 2018

Recommended Posts

[Python] Totale automatiquement le nombre total d'articles publiés par Qiita à l'aide de l'API
Obtenez le nombre de PV d'articles Qiita que vous avez publiés avec l'API
Obtenez des visites d'articles et des likes avec l'API Qiita + Python
[Python] Obtenez le nombre de vues de tous les articles publiés
Comment générer le nombre de vues, de likes et de stocks d'articles publiés sur Qiita au format CSV (créé avec "Python + Qiita API v2")
Déterminez l'authenticité des articles publiés par machine learning (API Google Prediction).
Calculez le nombre total de combinaisons avec python
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
Obtenez le nombre de vues de Qiita
Essayez d'utiliser l'API Kraken avec Python
Tweet à l'aide de l'API Twitter en Python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
Pandas du débutant, par le débutant, pour le débutant [Python]
Divise la chaîne de caractères par le nombre de caractères spécifié. En Ruby et Python.
Pour envoyer automatiquement des e-mails avec des pièces jointes à l'aide de l'API Gmail en Python
Sortie du nombre de cœurs de processeur en Python
Classement des numéros de stock par balise Qiita avec python
Essayez d'utiliser l'API BitFlyer Ligntning en Python
J'ai essayé d'utiliser le module Datetime de Python
Minimisez le nombre de polissages en optimisant la combinaison
Création récente de classement à l'aide de l'API Qiita avec Python
Essayez d'utiliser le module de collections (ChainMap) de python3
Téléchargement anonyme d'images à l'aide de l'API Imgur (à l'aide de Python)
Déterminez le nombre de classes à l'aide de la formule Starges
Essayez d'utiliser l'API ChatWork et l'API Qiita en Python
Essayez d'utiliser l'API DropBox Core avec Python
Après avoir frappé l'API Qiita avec Python pour obtenir une liste d'articles pour les débutants, nous visiterons les articles divins
[Python] Un programme qui compte le nombre de vallées
Explication du concept d'analyse de régression à l'aide de python Partie 2
Comment obtenir le nombre de chiffres en Python
[Python] Récupérez le texte de la loi à partir de l'API e-GOV law
Résumé des articles sur Python du chercheur Yukiya dans une société pharmaceutique
Paramètres initiaux lors de l'utilisation de l'API foursquare avec python
[Question] À propos de la conversion API du chat bot à l'aide de Python
La douleur de gRPC en utilisant Python. Novembre 2019. (Mémo personnel)
Envoyez et recevez Gmail via l'API Gmail en utilisant Python
Obtenir la taille (nombre d'éléments) de Union Find en Python
Utilisons la version Python du module API Confluence.
[Python] Utilisation de l'API Line [1ère création de Beauty Bot]
Explication du concept d'analyse de régression à l'aide de Python Partie 1
J'ai essayé d'utiliser l'API de Sakenowa Data Project
Explication du concept d'analyse de régression à l'aide de Python Extra 1
Utiliser l'API de recherche de la Bibliothèque du Parlement national en Python
Étude de Python Hour8: Utilisation de packages
Reconnaissance vocale des fichiers par l'API Google Speech v2 à l'aide de Python
[Python] Utilisez l'API Face de Microsoft Cognitive Services
Écoutez de la musique en accédant à l'API non officielle de Google Play Music
Clustering G-means qui détermine automatiquement le nombre de clusters
Appelez l'API Hatena Blog depuis Python et enregistrez vos articles de blog individuellement sur votre PC
J'ai créé une application avec Lambda qui notifie LINE de "j'aime" à l'aide de l'API Qiita.
J'ai écrit un script Python qui exporte tous mes articles à l'aide de l'API Qiita v2
Comment connaître le nombre de GPU de python ~ Remarques sur l'utilisation du multitraitement avec pytorch ~
Lisez des phrases en anglais en accédant à l'API Google Translation avec Python sans utiliser le module distribué
(Déplacer / Republier) Extraire du texte contenant des mots spécifiques à l'aide de l'API e-Gov law et de XML Python
le zen de Python
Obtenez le nombre d'éléments spécifiques dans la liste python