この記事はまだエラー修正中です。
mac OS
Qiita APIをPythonから使ってみる
https://qiita.com/sotoiwa/items/e2254893f5b0b92bb06e
$ python
Python 3.6.0 |Anaconda custom (64-bit)| (default, Dec 23 2016, 13:19:00)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
>>>
^D
$ pip install prettytable
Collecting prettytable
Downloading https://files.pythonhosted.org/packages/ef/30/4b0746848746ed5941f052479e7c23d2b56d174b82f4fd34a25e389831f5/prettytable-0.7.2.tar.bz2
Building wheels for collected packages: prettytable
Building wheel for prettytable (setup.py) ... done
Stored in directory: /Users/ogawakiyoshi/Library/Caches/pip/wheels/80/34/1c/3967380d9676d162cb59513bd9dc862d0584e045a162095606
Successfully built prettytable
Installing collected packages: prettytable
Successfully installed prettytable-0.7.2
$ python qiitacheck.py
Traceback (most recent call last):
File "qiitacheck.py", line 273, in <module>
main()
File "qiitacheck.py", line 232, in main
token = os.environ['QIITA_TOKEN']
File "/Users/ogawakiyoshi/.pyenv/versions/anaconda3-4.3.0/lib/python3.6/os.py", line 669, in __getitem__
raise KeyError(key) from None
KeyError: 'QIITA_TOKEN'
設定してなかった。
$ export QIITA_TOKEN= 16進数
$ python qiitacheck.py
Traceback (most recent call last):
File "qiitacheck.py", line 273, in <module>
main()
File "qiitacheck.py", line 232, in main
token = os.environ['']
File "/Users/ogawakiyoshi/.pyenv/versions/anaconda3-4.3.0/lib/python3.6/os.py", line 669, in __getitem__
raise KeyError(key) from None
KeyError: ''
$ ./qiitacheck.py
Traceback (most recent call last):
File "./qiitacheck.py", line 273, in <module>
main()
File "./qiitacheck.py", line 233, in main
items = get_items(token)
File "./qiitacheck.py", line 81, in get_items
response.raise_for_status()
File "/Users/ogawakiyoshi/.pyenv/versions/anaconda3-4.3.0/lib/python3.6/site-packages/requests/models.py", line 893, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://qiita.com/api/v2/items/8da100d945da8dc09600/stockers
え、エラーなの。20分くらい処理したのに。
原因調査中。
GASでQiita APIを使ってView・いいね・ストック数の一覧を取得する
https://qiita.com/tksnino/items/7e6a587ff6e1817490ad
【Qiita API】いいね!閲覧数の自動集計
https://qiita.com/Naoto9282/items/252c4b386aeafc0052ba
$curl -H 'Authorization: Bearer [アクセストークン]' https://qiita.com/api/v2/authenticated_user/items
{"message":"Unauthorized","type":"unauthorized"}
そりゃそうでしょう
[アクセストークン]
のところは、
ユーザの管理画面
https://qiita.com/settings/applications
に接続して、取得しないといけない。
アクセストークンの説明
のところには、
アクセストークンの説明
と書いて、「発行する」を押した。
長い16進数らしきものが出るので、ありがたくコピーして、curlコマンドの [アクセストークン]
のところにペーストする。
すごい大量のデータがでてきた。
#!/usr/bin/env python
# coding: utf-8
# @Naoto9282 2019年02月07日 02時02分 (JST)
# @kaizen_nagoya 2019 05 21
import requests
import json
url = 'https://qiita.com/api/v2/authenticated_user/items'
headers = {"content-type": "application/json",
"Authorization": "Bearer [アクセストークン]"}
res = requests.get(url, headers=headers)
list = res.json()
for item in list:
item_id = item['id']
title = item['title']
likes_count = item['likes_count']
url = 'https://qiita.com/api/v2/items/' + item_id
res = requests.get(url, headers=headers)
json = res.json()
page_views_count = json['page_views_count']
print(title, page_views_count, likes_count)
$ ./qiita.py
Traceback (most recent call last):
File "./qiita.py", line 6, in <module>
import requests
ImportError: No module named requests
$ python quita.py
正常出力。
プログラムちょい替え(5)pyhon中央値 114 1
人の間違いを繰り返せない系設計を 49 1
Line Driven Design 39 0
VPN Gate 29 0
「best practice」が「一番良い方法」ではない三つの理由 30 0
ISO, IEC, ITUの国際規格を読むには 24 0
テレビ会議システムを設営する 110 1
今年度の目標的な何か 103 1
docker(12)dockerでX11を動かすいくつかの方法 149 1
docker(11)docker file作ってみた 134 1
「小学生だった僕がプログラミングを覚えるまでにやったこと」をdockerで 170 3
中小企業庁用語集の書き直し案 49 1
請負契約でないと機敏(agile)にはできない 52 0
Maker Fairに出展するとよさげなもの(だしたもの)集め 42 1
音響技術におけるソフトウェアの役割 43 2
IT業界における長期計画、中期計画、単年度計画、短期計画 35 0
Qiita(31)Qiitaでfollowしている人をTwitterでfollowする 327 1
論文でRFC参照 42 1
不具合対処報告(案) 41 1
Qiita(30) 丸1日Qiitaが新規編集させてくれなかった時にやった事 80 1
なして20件しか出力しない?
['プログラムちょい替え(5)pyhon中央値', 115, 1]
['人の間違いを繰り返せない系設計を', 50, 1]
['Line Driven Design', 39, 0]
['VPN Gate', 29, 0]
['「best practice」が「一番良い方法」ではない三つの理由', 30, 0]
['ISO, IEC, ITUの国際規格を読むには', 24, 0]
['テレビ会議システムを設営する', 110, 1]
['今年度の目標的な何か', 103, 1]
['docker(12)dockerでX11を動かすいくつかの方法', 149, 1]
['docker(11)docker file作ってみた', 134, 1]
['「小学生だった僕がプログラミングを覚えるまでにやったこと」をdockerで', 170, 3]
['中小企業庁用語集の書き直し案', 49, 1]
['請負契約でないと機敏(agile)にはできない', 52, 0]
['Maker Fairに出展するとよさげなもの(だしたもの)集め', 42, 1]
['音響技術におけるソフトウェアの役割', 43, 2]
['IT業界における長期計画、中期計画、単年度計画、短期計画', 35, 0]
['Qiita(31)Qiitaでfollowしている人をTwitterでfollowする', 327, 1]
['論文でRFC参照', 42, 1]
['不具合対処報告(案)', 41, 1]
['Qiita(30) 丸1日Qiitaが新規編集させてくれなかった時にやった事', 80, 1]
やっぱ20件。
参考資料
Qiita API で公開情報の記事一覧を取得する、アクセストークンなどの認証必要なしのスクリプト例
https://qiita.com/YumaInaura/items/8004559925f40059abce
Qiitaの投稿記事からデータセット作った
https://qiita.com/dcm_chida/items/687654685dc434bdc9d4
Qiita(11)「Qiitaいいな〜自分のいいね分析」自分版
https://qiita.com/kaizen_nagoya/items/11955909b0302d9ba999
文書履歴(document history)
ver. 0.01 初稿 20190521
ver. 0.04 URL追記 20230226
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.