[PYTHON] Obtenez la liste "J'aime" de Qiita en grattant

introduction

Je vais d'abord l'écrire, mais je ne suis pas doué pour écrire des phrases, donc si c'est difficile à lire, je suis désolé. Eh bien, je suis très en colère de savoir que je ne peux pas voir la liste des likes parce que j'ai utilisé des likes au lieu du stock. Il semble que de nombreuses personnes s'inquiètent pour Twitter et Qiita. [^ 1] [^ 2] Alors, grattez avec python pour obtenir une liste de likes.

introduction

Après avoir installé python3, utilisez la commande pip pour demander, BeautifulSoup4, progressbar2 Se il vous plaît installer

code

Récupérez la liste d'articles et enregistrez-la dans le fichier results.json.

# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import requests
from time import sleep
import json
from progressbar import ProgressBar

#Connectez-vous à Qiita
payload = {
    'utf8': '✓',
    'identity': 'lovemuffim114',  #Nom d'utilisateur
    'password': 'tkhr2783'  #mot de passe
}

# authenticity_Obtenez un jeton
s = requests.Session()
r = s.get('https://qiita.com')
soup = BeautifulSoup(r.text, "html.parser")
auth_token = soup.find(attrs={'name': 'authenticity_token'}).get('value')
payload['authenticity_token'] = auth_token

#S'identifier
s.post('https://qiita.com/login', data=payload)

#Dictionnaire d'enregistrement des résultats
results = dict()

searchId = 1000000
param = {"before": searchId, "type": "id"}
#Obtenez le nombre d'articles
maxId = s.get("http://qiita.com/api/public", params=param).json()[0]["id"]
bar = ProgressBar(min_value=0, max_value=maxId)  #Définir la valeur maximale

try:  #Erreur lorsqu'il n'y a plus d'articles à charger
    while True:
        param = {"before": searchId, "type": "id"}
        #Obtenir la liste d'articles
        j = s.get("http://qiita.com/api/public", params=param).json()

        #Ajoutez les articles que vous aimez et ne stockez pas aux résultats.
        # "url"autre que,"uuid"Peut également être spécifié.
        results.update({i["title"]: i["url"] for i in j if i["liked"] and not i["stocked"]})
        
        searchId = j[-1]["id"]
        bar.update(maxId - searchId)  #Mise à jour de la barre de progression
        sleep(1)  # sleep(1 seconde)Vous pouvez utiliser des points décimaux.
finally:
    print(results)

    # results.Enregistrer dans json
    with open("results.json", "a") as f:
        json.dump(results, f, ensure_ascii=False, indent=4, separators=(',', ': '))

c'est tout. Le résultat est,

{
    "[Narou4j] Création d'une bibliothèque d'acquisition de roman pour devenir romancier à Java": "863aa22a29db16463e52",
    "Accélérer ListView sans utiliser ViewHolder": "28f8be64d39b20e69552",
    "[Narou4j] Création d'une bibliothèque de wrapper Java pour l'API Naruto": "6c050593f45174056005",
    "J'ai fait mon propre kit de culture hydroponique.": "5d60c14d560ecf518a4e",
    "RxJava + Flux (+ Kotlin)Conception d'applications Android par": "cbf304891daec87ba5b7",
    "J'ai créé EventBus avec RxJava": "a4ece37834446c9a39c8"
}

Il sera enregistré sous. Pour me connecter à Qiita, j'ai utilisé Connexion au site Web en Python.

Remarque

[^ 1]: [[Attention! ] Les articles ne seront pas stockés si vous appuyez simplement sur le bouton "J'aime" sur Qiita! J'ai écrit une extension! ]](Http://qiita.com/gimupop/items/be53044143a9a3e90a4b) [^ 2]: [Résultats de la recherche Twitter pour "qiita Like List-! -Breakthrough"](https://twitter.com/search?f=tweets&vertical=default&q=qiita%20%E3%81%84%E3% 81% 84% E3% 81% AD% E3% 80% 80% E4% B8% 80% E8% A6% A7% E3% 80% 80% 20-% EF% BC% 81% 20-% E7% AA% 81% E7% A0% B4 & src = typd)

Recommended Posts

Obtenez la liste "J'aime" de Qiita en grattant
Obtenez une liste d'articles publiés par les utilisateurs avec Python 3 Qiita API v2
[python] Obtenir une liste de variables d'instance
[Python] Obtenir une liste de dossiers uniquement
Obtenir une liste d'utilisateurs IAM avec Boto3
Ajouter une liste de fonctions de bibliothèque numpy petit à petit --a
Obtenez une liste créée par un utilisateur autre que vous
Python: obtenir une liste de méthodes pour un objet
Regrouper par éléments consécutifs d'une liste en Python
[Python] Comment créer une liste de chaînes de caractères caractère par caractère
[Commande] Commande pour obtenir une liste de fichiers contenant des caractères pleine largeur
Ajouter une liste de fonctions de bibliothèque numpy petit à petit --c
Obtenez le nombre d'éléments spécifiques dans la liste python
Obtenez une liste des livres électroniques DMM achetés avec Python + Selenium
Discord's Python 1.5 ou version ultérieure, je ne parviens pas à obtenir la liste des membres
Comment obtenir une liste d'exceptions intégrées pour python
Comment obtenir une liste de liens à partir d'une page de wikipedia
Python> Obtenir une liste de fichiers dans plusieurs répertoires> Utiliser glob | Trier par heure de modification
Obtenez le lien de téléchargement Splunk en grattant
Obtenez le nombre de vues de Qiita
Liste des packages installés par conda
Obtenez les tendances Qiita avec le scraping Python
Générer une liste de caractères consécutifs
Nogisaka 46 Obtenez des images de blog en grattant
Ne collectez que des images faciales d'une personne spécifique grâce au grattage Web
J'ai essayé d'obtenir une liste de noms AMI en utilisant Boto3
Mémorandum of scraping & machine learning [technique de développement] par Python (chapitre 4)
Mémorandum of scraping & machine learning [technique de développement] par Python (chapitre 5)
Obtenez une liste de fichiers dans un dossier avec python sans chemin
Pour Windows: obtenez une liste de répertoires et de fichiers dans un répertoire spécifique.
Obtenez des informations sur la propriété en grattant avec python
Obtenez une liste des packages installés dans l'environnement actuel avec python
Obtenez la liste des colonnes et la liste des données de CASTable
[Linux] Une commande pour obtenir une liste des commandes exécutées dans le passé
Conversion de chaîne d'une liste contenant des nombres
Obtenir un domaine appartenant à une organisation spécifique
Obtenez des visites d'articles et des likes avec l'API Qiita + Python
Obtenez le nom de fichier du répertoire (glob)
Script Python pour obtenir une liste d'exemples d'entrée pour le concours AtCoder
Comment obtenir une liste de fichiers dans le même répertoire avec python
Recevez de nombreux tweets Twitter à la fois
Un ensemble d'entiers qui satisfait ax + by = 1.
Obtenez la maintenance de l'iPad en grattant et en informant Slack
[python] Créer une liste de différents types de caractères
J'ai essayé d'obtenir une image en grattant
Afficher la sortie d'une liste de nombres à virgule flottante
Copiez la liste en Python
Obtenir uniquement les éléments de sous-classe dans une liste
Une vérification des performances du kit AWS SDK par langue
Obtenez des informations sur les matchs de course de bateaux avec le web scraping
Touchons une partie de l'apprentissage automatique avec Python
Rechercher par la valeur de l'instance dans la liste
Visualisation du classement des stagiaires de Produce 101 Japan par grattage
Après avoir frappé l'API Qiita avec Python pour obtenir une liste d'articles pour les débutants, nous visiterons les articles divins
Obtenez une liste des comptes GA, des propriétés et des vues sous forme de données verticales à l'aide de l'API
J'ai isolé mon environnement avec virtualenv, mais je reçois beaucoup de paquets avec pip list
[API Qiita] Obtenez des vues, des goûts et des actions par diverses méthodes (JavaScript, Google Script, Python, Vue.js)
[Linux] Liste des commandes Linux que les débutants devraient connaître
Obtenez le nom de la variable sous forme de chaîne de caractères.
Convertir un objet de tranche en liste de numéros d'index
Liste des endroits sur lesquels je suis tombé lors du téléchargement d'images à partir de Django