4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

この記事はまだエラー修正中です。

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
に接続して、取得しないといけない。

access.png

アクセストークンの説明
のところには、
アクセストークンの説明
と書いて、「発行する」を押した。

長い16進数らしきものが出るので、ありがたくコピーして、curlコマンドの [アクセストークン]
のところにペーストする。

すごい大量のデータがでてきた。

qiita.py
#!/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.

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?