D'une manière ou d'une autre, je voulais analyser les données des articles de Qiita, alors j'ai touché l'API. Vous n'avez pas besoin de vous authentifier cette fois, car il vous suffit d'obtenir les informations sur l'article.
J'ai essayé deux grandes choses.
Je vais expliquer dans l'ordre.
Chargez la bibliothèque.
import numpy as np
import pandas as pd
import requests
import json
from pandas.io.json import json_normalize
Le `` json_normalize '' en bas est pratique qui formate les données au format json renvoyées par l'API dans le format de trame de données pandas.
Pour l'exemple documentation API Qiita v2,
GET /api/v2/users?page=1&per_page=Il dit 20 etc..
En d'autres termes, vous pouvez obtenir des informations en accédant à l'URL suivante.
https://qiita.com/api/v2/users?page=1&per_page=20
Ici, `` `` par_page``` est le nombre d'utilisateurs à obtenir à la fois, et `` `` page``` est le nombre. Par exemple, si vous voulez 1000 informations utilisateur, `` `` par_page` Vous devez envoyer au moins 10 demandes avec = 100 (limite supérieure) `` ''.
Donc, dans le code, cela ressemble à ceci:
```python
n = 333 #Nombre d'utilisateurs que vous souhaitez obtenir
per_page = 100
df = pd.DataFrame()
for page in range(1, int(n/per_page)+2): #Obtenir beaucoup
base_url = "https://qiita.com/api/v2/users?page={0}&per_page={1}"
url = base_url.format(page, per_page)
response = requests.get(url)
res = response.json()
tmp_df = json_normalize(res)
df = pd.concat([df, tmp_df])
df.reset_index(drop=True, inplace=True)
df = df.iloc[:n,:] #Supprimer autant que vous le souhaitez
Le résultat est une trame de données comme celle-ci:
Pour l'exemple documentation API Qiita v2,
GET /api/v2/items?page=1&per_page=20&query=qiita+user%Il dit 3 Ayaotti etc..
En d'autres termes, vous pouvez obtenir des informations en accédant à l'URL suivante.
https://qiita.com/api/v2/items?page=1&per_page=20&query=qiita+user%3Ayaotti
Maintenant, une nouvelle `` `requête``` est apparue, qui vous donne les mêmes options de recherche que lors d'une recherche dans un navigateur, où`` `:` `ʻest` ``` dans l'URL. Notez qu'il est encodé dans la notation% 3A ''.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540956/1b6f986d-87c0-8552-0c53-fedf902b54cc.png)
En utilisant cela, vous pouvez obtenir les informations d'un utilisateur spécifique comme `` `` query = user% 3A 〇〇〇```.
Donc, le code ressemble à ceci:
```python
n = 125 #Nombre d'articles que vous souhaitez obtenir
user = "yaotti"
per_page = 100
df = pd.DataFrame()
for page in range(1, int(n/per_page)+2): #Obtenir beaucoup
base_url = "https://qiita.com/api/v2/items?page={0}&per_page={1}&query=user%3A{2}"
url = base_url.format(page, per_page, user)
response = requests.get(url)
res = response.json()
tmp_df = json_normalize(res)
df = pd.concat([df, tmp_df])
df.reset_index(drop=True, inplace=True)
df = df.iloc[:n,:] #Supprimer autant que vous le souhaitez
Le résultat est une trame de données comme celle-ci:
c'est tout!
Documentation de l'API Qiita v2 Convertir la liste de dictionnaires en DataFrame avec json_normalize de pandas
Recommended Posts