Ce que j'ai ressenti lorsque j'ai commencé à publier sur Qiita récemment, c'est que j'ai pu le stocker pendant environ 3 jours à 1 semaine après la publication. Donc, si vous pouvez saisir les balises populaires en environ 3 jours ou 1 semaine, pouvez-vous écrire un article qui peut être lu par plus de gens? J'y ai pensé.
article | Contenu |
---|---|
OS du serveur | CentOS6.6 |
Elasticsearch | 5.3.1 |
Kibana | 4.3.1 |
Qiita API | v2 |
Terminal qui appelle l'API | Mac |
Mac OS | OS X Yosemite |
Python | 2.7.10 |
J'ai utilisé l'API Qiita pour obtenir les données de publication de mon Mac et je les ai envoyées à Elasticsearch sur le serveur de mon laboratoire. Après l'envoi à Elasticsearch http://xxx.xxx.xxx.xxx:5601 (* xxx.xxx.xxx.xxx est l'adresse du serveur du laboratoire *) J'ai accédé et créé des graphiques, etc. en utilisant Kibana.
Les détails peuvent être trouvés dans la Documentation API Qiita v2. Je vais énumérer les éléments auxquels j'ai fait référence dans le document.
https://qiita.com/api/v2
Comme indiqué dans les restrictions d'utilisation </ b> de la documentation, vous pouvez effectuer des requêtes environ 60 fois par heure sans authentification. Il semble que si vous vous authentifiez, ce sera 1000 fois, mais parce que je n'étais pas sûr, je l'ai fait sans authentification cette fois.
$ curl -XGET 'https://qiita.com/api/v2/items?page=3&per_page=20'
Si vous le faites, je pense que le résultat sera renvoyé pour le moment. La signification de cette commande est d'obtenir 20 éléments de données sur la 3ème page. En d'autres termes, notez que le nombre de données pouvant être obtenues est de 20 et non de 3 * 20.
Vous pouvez décider vous-même de la page et de la page par_page, mais il existe des restrictions. Il est résumé dans le tableau ci-dessous.
parameter | valeur minimum | Valeur maximum |
---|---|---|
page | 1 | 100 |
per_page | 20 | 100 |
Si vous obtenez 100 données de publication sur chaque page, vous pouvez obtenir jusqu'à 10000 données de publication.
forward_json.py
# coding: utf-8
import json
import requests
from elasticsearch import Elasticsearch
#Adresse du serveur sur lequel Elasticsearch est installé
server_address = "xxx.xxx.xxx.xxx"
#S'il est installé et les paramètres standard, le port est 9200
port = str(9200)
#Créer une instance d'Elasticsearch
es = Elasticsearch("%s:%s" % (server_address, port))
#point final
endpoint = 'https://qiita.com/api/v2/items'
for p in range(1, 11): #Effectuez le traitement suivant de la page 1 à la page 10 de la même manière.
payload = {'page': p, 'per_page': '100'} #Obtenez 100 données par page
r = requests.get(endpoint, params=payload).json() #Recevez le résultat au format json
'''
#Pour votre référence
print type(r)
# => <type 'list'>
print r[0].keys()
# => [u'body', u'group', u'rendered_body', u'url', u'created_at', u'tags', u'updated_at', u'private', u'coediting', u'user', u'title', u'id']
'''
for it in r: #Parcourez la liste des résultats
#Insérez toutes les données! !!
#Cette fois j'ai essayé de nommer l'index qiita
es.index(index='qiita', doc_type='qiita', id=it['id'], body=it)
Dans server_address, écrivez l'adresse du serveur sur lequel Elasticsearch et Kibana sont installés. L'exécution de ce code doit stocker un total de 1000 données de publication dans Elasticsearch.
Accédez à http //xxx.xxx.xxx.xxx:5601. J'ai récupéré 1000 données de publication depuis l'API Qiita et je les ai stockées dans Elasticsearch. Ceci est une image compressée avec des nombres et des descriptions de graphiques ajoutés en rouge. Pour le moment, le nom d'utilisateur était masqué.
Il y a des moments où le nombre de messages est extrêmement élevé, alors cliquez dessus.
Cliquez sur le cercle vert dans l'image ci-dessus pour changer de page.
Il semble que le nombre de messages au cours de cette période a augmenté en raison des messages en colère d'utilisateurs enthousiastes.
Classement | Nom de la balise | nombre de postes |
---|---|---|
1 | python | 62 |
2 | ruby | 50 |
3 | aoj | 49 |
4 | javascript | 49 |
5 | c | 45 |
6 | ios | 41 |
7 | swift | 38 |
8 | php | 38 |
9 | java | 33 |
10 | linux | 29 |
Le résultat était! Après tout, il existe de nombreuses balises de programmation! Je voulais vraiment connaître le classement des numéros de stock des étiquettes, mais j'ai arrêté d'obtenir le numéro de stock à partir des données affichées car c'était difficile sans authentification. Je voudrais contester quand j'ai le temps. Cette fois, j'ai trouvé qu'il y avait de nombreux articles avec des balises python, donc j'aimerais continuer à publier pour pouvoir ajouter des balises python.