Obtenez des visites d'articles et des likes avec l'API Qiita + Python

Obtenez des visites d'articles et des likes avec l'API Qiita + Python

introduction

`Ceci est un article sur l'environnement Mac, mais la procédure est la même pour l'environnement Windows. Veuillez lire et essayer la partie dépendant de l'environnement. ''

Objectif

Utilisez l'API Qiita pour obtenir le nombre d'articles consultés et le nombre de LGTM.

Après avoir lu cet article jusqu'au bout, vous pourrez:

No. Aperçu mot-clé
1 Qiita API
2 REST API requests

Image complète

command.sh


page_views_count=11130, likes_count=21, title=Obtenir des données Salesforce à l'aide de l'API REST, url=https://qiita.com/nsuhara/items/19cf8ec89b88fb3deb39
page_views_count=04778, likes_count=11, title=Compétence Alexa en Python/Implémenté dans Lambda, url=https://qiita.com/nsuhara/items/5b19cfb5ffb897bd4cfd
page_views_count=04482, likes_count=06, title=Limiter les pièces jointes Salesforce, url=https://qiita.com/nsuhara/items/bd41c9ad946b8b832207
page_views_count=04008, likes_count=11, title=Test unitaire pour Swift(Unit Test)comment faire, url=https://qiita.com/nsuhara/items/bc06c07ff30a5b78696d
page_views_count=03543, likes_count=03, title=IOS avec Kony App Platform/Créer une application Android, url=https://qiita.com/nsuhara/items/c28d838492512850520c
page_views_count=02642, likes_count=07, title=Flask-SQLAlchemy +Créer un service Web dans PostgreSQL, url=https://qiita.com/nsuhara/items/fa5998c0b2f4fcefbed4
page_views_count=02579, likes_count=15, title=Heroku + Selenium +Automatisez le processus WEB avec Chrome, url=https://qiita.com/nsuhara/items/76ae132734b7e2b352dd
page_views_count=02127, likes_count=04, title=Exécutez régulièrement Python sur Heroku Scheduler, url=https://qiita.com/nsuhara/items/fac20adb6b0a122a3709
page_views_count=02102, likes_count=07, title=Docker +Créer un service Web avec Flask, url=https://qiita.com/nsuhara/items/c7eff7fae3801f85b5cd
page_views_count=01869, likes_count=08, title=Messaging API + LIFF + Heroku + Flask +Créer LINE BOT avec l'extension Framework, url=https://qiita.com/nsuhara/items/0c431913165e4af0f8f5
page_views_count=01597, likes_count=04, title=Service de données Salesforce Lightning(LDS)en savoir plus sur, url=https://qiita.com/nsuhara/items/ecd77def7aa1f985efcc
page_views_count=01507, likes_count=01, title=IOS créé avec Kony App Platform/En savoir plus sur le codage des applications Android, url=https://qiita.com/nsuhara/items/bf0e8884a7efc3c55176
page_views_count=01490, likes_count=05, title=Créer un service Web RESTful avec Flask, url=https://qiita.com/nsuhara/items/449835bc94f0fb3bbcbd
page_views_count=01477, likes_count=02, title=De JSON à Word en utilisant Python(docx)Créer, url=https://qiita.com/nsuhara/items/3ba2fa7db38acd04f448
page_views_count=01377, likes_count=02, title=AWS-Lambda +Données AWS CSV avec Python-Écrire dans S3, url=https://qiita.com/nsuhara/items/b2bd1d2623bca0f767f8
page_views_count=01208, likes_count=03, title=AWS-Lambda +AWS avec Python-RDS/Lire la table PostgreSQL, url=https://qiita.com/nsuhara/items/dd780c2622258d10f961
page_views_count=01194, likes_count=02, title=Django + SQLAlchemy + SQLite3 /Créer une application Web dans PostgreSQL, url=https://qiita.com/nsuhara/items/4ab5366273082ee0aa73
page_views_count=01159, likes_count=04, title=AWS-Lambda + Python +Effectuer régulièrement du grattage WEB avec Cron, url=https://qiita.com/nsuhara/items/0d36600511fc162827f6
page_views_count=01071, likes_count=01, title=IOS créé avec Kony App Platform/Lien de données entre l'application Android et Salesforce, url=https://qiita.com/nsuhara/items/756120f1bddc6f8fe78b
page_views_count=00887, likes_count=00, title=IOS créé avec Kony App Platform/En savoir plus sur la disposition automatique pour les applications Android, url=https://qiita.com/nsuhara/items/a52abd9861c51823ecec
page_views_count=00647, likes_count=02, title=AWS avec Python-S3 signé(Avec une limite de temps)Générer une URL, url=https://qiita.com/nsuhara/items/20160b080c2b30d57729
page_views_count=00597, likes_count=03, title=Interface graphique de la passerelle API Kong/Construire Konga, url=https://qiita.com/nsuhara/items/a0de75e6767f98cc8fec
page_views_count=00500, likes_count=01, title=Construire la passerelle API Kong, url=https://qiita.com/nsuhara/items/ad1d8fa1faad7940b5c1
page_views_count=00471, likes_count=00, title=De la configuration du Raspberry Pi à l'installation de l'environnement Python, url=https://qiita.com/nsuhara/items/05a2b41d94ced1f54316
page_views_count=00437, likes_count=02, title=Créer une voiture à distance avec Raspberry Pi et Python, url=https://qiita.com/nsuhara/items/7970b5dfe95ea76c93d6
page_views_count=00364, likes_count=00, title=Flask-Comment implémenter UPSERT avec SQL Alchemy, url=https://qiita.com/nsuhara/items/86570f789093222252b1
page_views_count=00307, likes_count=00, title=LCD avec Raspberry Pi et Python(16x2)Créer un jeu, url=https://qiita.com/nsuhara/items/57105fd232feffbcd05c
page_views_count=00140, likes_count=00, title=Comment insérer par lots des données CSV dans PostgreSQL, url=https://qiita.com/nsuhara/items/a1b75e0557ed134c5302

items_count=28, total_page_views_count=55690, total_likes_count=125

Environnement d'exécution

environnement Ver.
macOS Catalina 10.15.6
Python 3.7.3
requests 2.24.0

Code source

Je pense que vous pouvez approfondir votre compréhension en suivant réellement le contenu de l'implémentation et le code source. Veuillez l'utiliser par tous les moyens.

GitHub

Articles Liés

Précautions (points de lutte)

Nombre d'accès aux articles (page_views_count)

Il semble que le nombre d'accès (page_views_count) sera "nul" si vous obtenez "des articles en masse" ou "obtenez des articles d'autres personnes" en raison des restrictions de l'API. En guise de contre-mesure, elle a été réalisée par une procédure en deux étapes: Étape 1: Obtention des ID d'article dans un lot, et Étape 2: Obtention du numéro d'accès à chaque article à l'aide de l'ID. (Comme il existe des restrictions d'utilisation de l'API, si le nombre d'articles augmente (= le nombre de demandes augmente), vous risquez d'être pris dans la limite)

Restrictions d'utilisation de l'API

Les demandes sont acceptées jusqu'à 1 000 fois par heure pour chaque utilisateur lorsqu'il est authentifié et jusqu'à 60 fois par heure pour chaque adresse IP lorsqu'elle n'est pas authentifiée.

Jeton d'accès

Paramètres du jeton d'accès personnel

Paramètres> Application> Émettre un nouveau jeton> Cochez read_qiita> Problème

`* Veuillez enregistrer le jeton d'accès personnel émis. Cette chaîne ne peut pas être réaffiche. ''

Config

config.sh


export PYTHONPATH=app/
export QIITA_ACCESS_TOKEN={Jeton d'accès enregistré ci-dessus}
export QIITA_PAGE=1
export QIITA_PER_PAGE=100
export QIITA_URL_ITEM=qiita.com/api/v2/items
export QIITA_URL_LIST=qiita.com/api/v2/authenticated_user/items

Principale

main.py


"""app/main.py
"""

import os

import requests


def get(url):
    """get
    """
    headers = {
        'Content-Type': 'application/json',
        'Charset': 'utf-8',
        'Authorization': 'Bearer {}'.format(os.getenv('QIITA_ACCESS_TOKEN'))
    }
    res = requests.get(url=url, headers=headers)
    print('{}, {}'.format(res.status_code, res.url))
    return res


def get_id_list():
    """get_list
    """
    res = get(url='https://{url}?page={page}&per_page={per_page}'.format(**{
        'url': os.getenv('QIITA_URL_LIST'),
        'page': os.getenv('QIITA_PAGE'),
        'per_page': os.getenv('QIITA_PER_PAGE')
    }))
    return [item.get('id') for item in res.json()]


def get_item(qiita_id):
    """get_item
    """
    res = get(url='https://{url}/{id}'.format(**{
        'url': os.getenv('QIITA_URL_ITEM'),
        'id': qiita_id
    }))
    item = res.json()
    return {
        'page_views_count': item.get('page_views_count'),
        'likes_count': item.get('likes_count'),
        'title': item.get('title'),
        'url': item.get('url')
    }


def output(items):
    """output
    """
    total_page_views_count = 0
    total_likes_count = 0

    print('-'*100)

    for item in items:
        total_page_views_count = total_page_views_count + \
            item.get('page_views_count')
        total_likes_count = total_likes_count+item.get('likes_count')

        print('page_views_count={}, likes_count={}, title={}, url={}'.format(
            str(item.get('page_views_count')).zfill(5),
            str(item.get('likes_count')).zfill(2),
            item.get('title'),
            item.get('url'))
        )

    print('\nitems_count={}, total_page_views_count={}, total_likes_count={}'.format(
        len(items), total_page_views_count, total_likes_count))

    print('-'*100)


def main():
    """main
    """
    items = list()

    for qiita_id in get_id_list():
        items.append(get_item(qiita_id=qiita_id))

    sorted_items = sorted(
        items, key=lambda x: x['page_views_count'], reverse=True)

    output(items=sorted_items)


if __name__ == '__main__':
    main()

Exemple d'exécution

sample.sh


~$ git clone https://github.com/nsuhara/python-qiita-api.git -b master
~$ cd python-qiita-api

~$ python -m venv .venv
~$ source .venv/bin/activate
~$ pip install -r requirements.txt
~$ source config

~$ python app/main.py

Recommended Posts

Obtenez des visites d'articles et des likes avec l'API Qiita + Python
Obtenez le nombre de PV d'articles Qiita que vous avez publiés avec l'API
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
[Python] Obtenez des informations sur les utilisateurs et des articles sur l'API de Qiita
[Python] Obtenez le nombre de vues de tous les articles publiés
Obtenez une liste d'articles publiés par les utilisateurs avec Python 3 Qiita API v2
[Python] Totale automatiquement le nombre total d'articles publiés par Qiita à l'aide de l'API
Après avoir frappé l'API Qiita avec Python pour obtenir une liste d'articles pour les débutants, nous visiterons les articles divins
Calculez le nombre total de combinaisons avec python
Obtenez l'objet et le corps de Gmail avec Python et l'API Gmail
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
Obtenez et estimez la forme de la tête en utilisant Dlib et OpenCV avec python
Obtenez le cours de l'action d'une entreprise japonaise avec Python et faites un graphique
Comment obtenir le nombre de chiffres en Python
Visualisez la gamme d'insertions internes et externes avec python
Obtenir la taille (nombre d'éléments) de Union Find en Python
Obtenez des commentaires et des abonnés avec l'API de données YouTube
Obtenez l'état de fonctionnement de JR West avec Python
Obtenez le nombre de chiffres
Appelez l'API avec python3.
Essayez d'utiliser l'API Twitter rapidement et facilement avec Python
Obtenez le nombre d'éléments spécifiques dans la liste python
Touchons l'API de Netatmo Weather Station avec Python. #Python #Netatmo
Débarrassez-vous des données sales avec Python et les expressions régulières
[Homologie] Comptez le nombre de trous dans les données avec Python
Exemple d'analyse HTTP GET et JSON avec Pepper Python
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python
Récupérez la source de la page à charger indéfiniment avec python.
Appelez l'API Hatena Blog depuis Python et enregistrez vos articles de blog individuellement sur votre PC
Obtenez des avis avec l'API googlemap de python
J'ai créé une application avec Lambda qui notifie LINE de "j'aime" à l'aide de l'API Qiita.
Quine Post avec l'API Qiita (Python)
Obtenez la météo avec les requêtes Python
Accédez à l'API Etherpad-lite avec Python
Obtenez les tendances Qiita avec le scraping Python
Obtenez le nombre d'abonnés Youtube
Coexistence de Python2 et 3 avec CircleCI (1.0)
Obtenez le prix d'achat et de vente de la monnaie virtuelle avec l'API de l'échange Zaif et créez un graphique
J'ai comparé la vitesse de Hash avec Topaz, Ruby et Python
J'ai essayé de gratter le classement du calendrier de l'avent Qiita avec Python
Comptez bien le nombre de caractères thaïlandais et arabes en Python
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
[Python] Comment obtenir le premier et le dernier jour du mois
Exploration avec Python et Twitter API 2-Implémentation de la fonction de recherche d'utilisateurs
Obtenez et définissez la valeur du menu déroulant en utilisant Python et Selenium
Obtenez le titre et la date de livraison de Yahoo! News en Python
Obtenez le nombre de lecteurs d'articles sur Mendeley en Python
PhytoMine-I a essayé d'obtenir les informations génétiques de la plante avec Python
Vérifier l'existence du fichier avec python
[Python] Récupère le nom de la variable avec str
Obtenez les débats parlementaires via l'API
Obtenez des vacances avec l'API Google Agenda
[Python] Récupère le code de caractère du fichier
[Python] Obtenez des informations sur le package Python avec l'API PyPI
Compter le nombre de caractères avec écho
Obtenez la largeur du div côté serveur avec Selenium + PhantomJS + Python
J'ai remplacé le calcul numérique de Python par Rust et comparé la vitesse
Calculer l'itinéraire le plus court d'un graphe avec la méthode Dyxtra et Python