15
6

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 5 years have passed since last update.

Qiitaいいな〜自分のいいね分析

Posted at

5年くらいQiitaにお世話になっています。Twitterでふぁぼをするくらいの気軽さで、読んだ記事をいいね!していました。

いいねした記事も6,928件にもなっていたと気づかせてくれた下記記事に触発され、自分のいいねした記事を雑に分析してみました。

Qiitaいいな〜ランキング

データ取得方法

例によってQiita APIにはユーザがいいねしている記事を取得するモノはありません。
(Stockしている記事の一覧取得はありますが)
Qiita API v2ドキュメント

そのため、ユーザのいいねした記事の一覧画面をスクレイピングし情報を取得します。
https://qiita.com/snona/like

スクレイピングの実装は、RubyからSeleniumを利用しています。

取得するデータ

ユーザのいいねした記事一覧画面

とりあえず取れそうなデータとして以下があります。

  • タイトル
  • タグ
  • いいね数
  • コメント数

記事ごとのStock数も取得したかったですが、残念ながらいいねした記事の一覧には表示がないです。

ざくっとタグ, いいね数を集計することにしました。

タグからは良く読む記事の技術傾向が , いいね数からはミーハー具合がわかるのではないかという考えです。

結果

タグ

全タグは3,628個でしたが、そのうち1回のみ出現したタグは2,166個と60%近くが1度のみの出現でした。
原因としては名前の揺れが多く、まじめにするのであればクレンジングが必要そうです。

いいねした記事のタグTop10をみると確かに興味のある, あった, 業務で利用する内容が多いです。
(YouTubeとresasがなぜこんなに高いのか不明ですが。。。)
いいねした記事のタグ(Top10)

以下トップ100です。Reactとreactjsなどでタグが別れています。

タグ名 出現数
JavaScript 1143
React 567
Java 402
gas 379
Elixir 363
Ruby 359
YouTube 358
resas 351
Python 336
reactjs 300
Node.js 299
新人プログラマ応援 292
Rails 257
iOS 238
CSS 236
Git 234
HTML 223
ポエム 218
GitHub 193
Electron 187
Android 174
機械学習 173
Swift 170
PHP 165
HTML5 138
Qiita 135
DeepLearning 133
初心者 125
Unity 124
AWS 121
spring-boot 118
spring 98
Linux 94
redux 88
Mac 88
docker 87
jQuery 86
Markdown 85
AngularJS 84
Slack 80
Windows 79
Firebase 79
プログラミング 78
Go 77
C# 73
TensorFlow 73
CSS3 72
api 70
エンジニア 67
GoogleAppsScript 65
vue.js 62
bootstrap 62
Web 59
TypeScript 58
Twitter 58
es6 57
webpack 57
C++ 56
MachineLearning 55
react.js 53
MySQL 52
Redmine 50
npm 48
プロジェクト管理 44
Bash 43
コミュニケーション 42
CentOS 42
Apache 42
フロントエンド 41
RubyOnRails 41
プロジェクトマネジメント 41
マネジメント 40
人工知能 40
勉強会 40
Heroku 39
IoT 38
データ分析 38
golang 37
canvas 37
RPGツクールMV 37
gulp 37
google 36
アジャイル 36
reactnative 36
Xcode 36
babel 36
flux 35
ATOM 35
セキュリティ 35
Vim 34
JSON 34
WebAPI 34
Ubuntu 34
GitLab 33
Excel 33
rest 33
gradle 33
VisualStudioCode 32
AdventCalendar 32
AI 32

いいね数

いいね数10以下の記事は20%近くありますが、この中には良記事と思うものも多々あり、少々残念に思います。

いいねした記事のいいね数

いいね数 記事数
1 138
2~10 1549
11~50 2831
51~100 974
101~1000 1615
1001~ 196

トレンドの記事ばかりを読んでいるかや、自分だけがいいねしている記事が多いかなどを期待していましたが、記事の大部分はいいねが50以下ということや、いいね数が多い記事は限られているため、いいね数の集計にはあまり意味はなかったかもしれません。

みなさん「いいね」は欲しいですか?Qiitaにて「いいね」を頂ける記事とは?を分析してみたよ

ソース

require 'selenium-webdriver'

# 対象ユーザのQiitaID
id = 'snona'

driver = Selenium::WebDriver.for :chrome

# いいねの記事一覧ページに移動
driver.navigate.to "https://qiita.com/#{id}/like"

# いいね, タグの集計
likes = Hash.new(0)
tags = Hash.new(0)

loop do
  # いいね数を取得
  driver.find_elements(:class, 'fa-like').each{|like| likes[like.find_element(:xpath, '..').text] += 1}

  # タグを取得
  driver.find_elements(:class, 'TagList__label').each{|tag| tags[tag.text] += 1}

  # 次ページへ遷移
  begin
    driver.find_element(:class, 'js-next-page-link').click
  rescue
    # 見つからない場合は終了
    break
  end
end

driver.quit

# いいねの結果を出力
puts 'likes'
likes.sort{|(k1, v1), (k2, v2)| v2 <=> v1}.each{|key, value| puts "#{key},#{value}"}

# タグの集計を出力
puts 'tags'
tags.sort{|(k1, v1), (k2, v2)| v2 <=> v1}.each{|key, value| puts "#{key},#{value}"}

次のページが見つからない場合をrescueで抜けるなど全体的に雑に実装しております。おすすめの書き方等がありましたらご指摘をお願いします。

350ページ程度を集計するのに30分程度かかりました。ヘッドレスにするともう少し早いんでしょうか?

Qiitaの使い方

自分のQiitaの使い方は大きく3種類です。

  1. トレンドの一覧から見る
  2. タグの新着一覧から見る
  3. 知りたいことをGoogle検索して見る

トレンドは良記事が多いと思いますが、タグの新着にもいいねは少なくとも良記事が見れる気がします。

ザクッと過去のいいねした記事を分析し、自分の興味がある(あった)技術傾向のタグから良記事にであってもらえればと思います。

最後に

ユーザのいいねした記事一覧からいいね数とタグだけを集計して抽出しましたが、いいねが多い記事を確認したかったりする場合に面倒なため、抽出できるデータ(記事タイトルとか)は全て抽出し、あとから集計するべきでした。

15
6
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
15
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?