Als ich kürzlich mit dem Posten bei Qiita begann, hatte ich das Gefühl, dass ich es nach dem Posten für etwa 3 Tage bis 1 Woche auf Lager haben konnte. Wenn Sie die beliebten Tags innerhalb von 3 Tagen oder 1 Woche erfassen können, können Sie dann einen Artikel schreiben, der von mehr Personen gelesen werden kann? Ich habe darüber nachgedacht.
Artikel | Inhalt |
---|---|
Server-Betriebssystem | CentOS6.6 |
Elasticsearch | 5.3.1 |
Kibana | 4.3.1 |
Qiita API | v2 |
Terminal, das die API aufruft | Mac |
Mac OS | OS X Yosemite |
Python | 2.7.10 |
Ich habe die Qiita-API verwendet, um die Post-Daten von meinem Mac abzurufen und an Elasticsearch zu senden, das auf dem Server in meinem Labor ausgeführt wird. Nach dem Senden an Elasticsearch http://xxx.xxx.xxx.xxx:5601 (* xxx.xxx.xxx.xxx ist die Adresse des Laborservers *) Ich habe mit Kibana auf Grafiken usw. zugegriffen und diese erstellt.
Details finden Sie in der Qiita API v2-Dokumentation. Ich werde die Elemente auflisten, auf die ich mich aus dem Dokument bezogen habe.
https://qiita.com/api/v2
Wie in den Nutzungsbeschränkungen </ b> in der Dokumentation angegeben, können Sie ohne Authentifizierung etwa 60 Mal pro Stunde Abfragen durchführen. Es scheint, dass wenn Sie sich authentifizieren, es 1000 Mal sein wird, aber weil ich nicht sicher war, habe ich es diesmal ohne Authentifizierung getan.
$ curl -XGET 'https://qiita.com/api/v2/items?page=3&per_page=20'
Wenn Sie dies tun, denke ich, dass das Ergebnis vorerst zurückgegeben wird. Die Bedeutung dieses Befehls besteht darin, 20 Daten auf der 3. Seite abzurufen. Mit anderen Worten, beachten Sie, dass die Anzahl der Daten, die abgerufen werden können, 20 und nicht 3 * 20 beträgt.
Sie können page und per_page selbst festlegen, es gibt jedoch Einschränkungen. Es ist in der folgenden Tabelle zusammengefasst.
parameter | Mindestwert | Maximalwert |
---|---|---|
page | 1 | 100 |
per_page | 20 | 100 |
Wenn Sie 100 Beitragsdaten von jeder Seite erhalten, können Sie bis zu 10000 Beitragsdaten abrufen.
forward_json.py
# coding: utf-8
import json
import requests
from elasticsearch import Elasticsearch
#Adresse des Servers, auf dem Elasticsearch installiert ist
server_address = "xxx.xxx.xxx.xxx"
#Wenn installiert und Standardeinstellungen, ist der Port 9200
port = str(9200)
#Erstellen Sie eine Instanz von Elasticsearch
es = Elasticsearch("%s:%s" % (server_address, port))
#Endpunkt
endpoint = 'https://qiita.com/api/v2/items'
for p in range(1, 11): #Führen Sie die folgende Verarbeitung von Seite 1 bis Seite 10 auf die gleiche Weise durch.
payload = {'page': p, 'per_page': '100'} #Erhalten Sie 100 Daten pro Seite
r = requests.get(endpoint, params=payload).json() #Erhalten Sie das Ergebnis im JSON-Format
'''
#Als Referenz
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: #Durchlaufen Sie die Ergebnisliste
#Fügen Sie alle Daten ein! !!
#Diesmal habe ich versucht, Index Qiita zu benennen
es.index(index='qiita', doc_type='qiita', id=it['id'], body=it)
Schreiben Sie in server_address die Adresse des Servers, auf dem Elasticsearch und Kibana installiert sind. Wenn Sie diesen Code ausführen, sollten insgesamt 1000 Post-Daten in Elasticsearch gespeichert werden.
Gehen Sie zu http //xxx.xxx.xxx.xxx:5601. Ich habe 1000 Post-Daten von der Qiita-API abgerufen und in Elasticsearch gespeichert. Dies ist ein zusammengedrücktes Bild mit rot hinzugefügten Zahlen und Grafikbeschreibungen. Der Benutzername war vorerst ausgeblendet.
Es gibt Zeiten, in denen die Anzahl der Beiträge extrem hoch ist. Klicken Sie also darauf.
Klicken Sie auf den grünen Kreis im Bild oben, um die Seite zu ändern.
Es scheint, dass die Anzahl der Beiträge in diesem Zeitraum aufgrund der verärgerten Beiträge begeisterter Benutzer gestiegen ist.
Rangfolge | Verlinke den Namen | Anzahl der Beiträge |
---|---|---|
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 |
Das Ergebnis war! Immerhin gibt es viele Programmier-Tags! Ich wollte unbedingt die Bestandsnummernrangfolge der Tags kennen, habe jedoch die Bestandsnummer nicht mehr aus den veröffentlichten Daten abgerufen, da dies ohne Authentifizierung schwierig war. Ich möchte herausfordern, wenn ich Zeit habe. Dieses Mal habe ich festgestellt, dass es viele Posts mit Python-Tags gibt. Daher möchte ich weiterhin Beiträge veröffentlichen, damit ich Python-Tags hinzufügen kann.
Recommended Posts