接続数(counter)

132329From 2012/10/4

通信規約日誌(network protocol diary)

通信規約 >> Article details

2019/05/21

qiita 記事取得

Tweet ThisSend to Facebook | by kaizen
【Qiita API】いいね!閲覧数の自動集計
https://qiita.com/Naoto9282/items/252c4b386aeafc0052ba


```shell-session
$curl -H 'Authorization: Bearer [アクセストークン]'   https://qiita.com/api/v2/authenticated_user/items
{"message":"Unauthorized","type":"unauthorized"}
```
そりゃそうでしょう

 [アクセストークン]
のところは、
 ユーザの管理画面
https://qiita.com/settings/applications
に接続して、取得しないといけない。

<img width="658" alt="access.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/51423/640df310-55b5-2e90-4e6a-9f04817065d1.png">


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

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

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

```python: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)
```


```shell-session
$ ./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

```python:qiitamonth.py
import pandas as pd

dic={}
for year in range(2011,2019):
  for month in range(1,13):
    key = "{}-{}".format(year,month)
    total_articles,total_pages = get_monthly_data(year,month)
    dic[key]=[total_articles, total_pages]
    print(year, month, total_articles, total_pages)
    time.sleep(60)

x = list(dic.keys())
y = [cnt[0] for cnt in list(dic.values())]
df = pd.DataFrame({'time':x,'count':y},index=x)
df = df.drop(index=['2018-11','2018-12'])
df['count'].plot(figsize=(16,9),
                 title='The Number of Monthly Posts in Qiita',
                 xticks=range(0,len(x))[::3],
                 rot=45)
```

```
$ python qiitamonth.py
Traceback (most recent call last):
  File "qiitamonth.py", line 7, in <module>
    total_articles,total_pages = get_monthly_data(year,month)
NameError: name 'get_monthly_data' is not defined
```

Qiita(11)「Qiitaいいな〜自分のいいね分析」自分版
https://qiita.com/kaizen_nagoya/items/11955909b0302d9ba999

16:13 | Impressed! | Voted(0) | Comment(0)