LoginSignup
5
9

More than 5 years have passed since last update.

Webスクレイピングで技術書典5におけるトレンドを調べてみた

Posted at

はじめに

技術書典5に参加はできませんでしたが、BOOTHの商品ページのタグを使って、技術書典5のトレンドを体感できたらいいなあと思ってやってみた記事です。

技術書典とは

新しい技術に出会えるお祭りです。
技術書典は、いろんな技術の普及を手伝いたいとの想いではじまりました。
技術書を中心として出展者はノウハウを詰め込み、来場者はこの場にしかないおもしろい技術書をさがし求める、技術に関わる人のための場として『技術書典』を開催します。
技術書典: https://techbookfest.org/

最近 (2018/10/08)、技術書典5が開催され、総来場者数は1万人を超えたようです。1

BOOTHとは

BOOTHとは、pixivと連携した
ネットショップサービスです。
pixivで活躍しているクリエイターをはじめ、
様々なクリエイターの素敵な作品が
あなたを待っています。
BOOTH: https://booth.pm/customer_guide

技術書典で頒布された技術書も扱っており、参加できなかった人も手に入れることができます。

ソースコード

BOOTHにおいて技術書典5で頒布された技術書のタグを取得し、各タグがいくつあるのかを数えます。

コードの流れ
1. 一覧ページのurlから、各商品ページのurlを取得
2. 各商品ページのurlから、タグを取得し順番にリストに追加
3. 各タグが何回出現するのかをカウントして、降順で表示

Python3でBeautifulSoup4, Counterを使いました。さらっと書いたので、色々あれかもしれないです。

参考にした記事
PythonとBeautiful Soupでスクレイピング
Pythonで単語の数え上げとかするならCounterを使うと便利なはなし

scraping_tech5.py
import urllib
from collections import Counter 
from bs4 import BeautifulSoup


#イベントを技術書典5に絞り込んだ際の一覧のurlを全て作成
urls = ["https://booth.pm/ja/events/techbookfest-5"]
lastpage_number = 15
for i in range(2, lastpage_number+1, 1):
    urls.append("https://booth.pm/ja/events/techbookfest-5" + "?page=" + str(i))


list_htmls = []
urls_item = []
data_tag = []


#一覧から各商品のページのurlを取得
for url in urls:
    html = urllib.request.urlopen(url)
    soup = BeautifulSoup(html, "html.parser")
    list_items = soup.find_all("a", target="_self", class_="nav")

    for item in list_items:
        urls_item.append(item.get("href"))


#商品のurlからtagを取得してカウント
for url in urls_item:
    html = urllib.request.urlopen(url)
    soup = BeautifulSoup(html, "html.parser")
    list_tags = soup.find_all("div", class_="search-guide-tablet-label-inner")
    for tag in list_tags:
        data_tag.append(tag.string)

counter = Counter(data_tag)
for word, cnt in counter.most_common():
    print(word, cnt)

結果

4票以上のタグの一覧を以下に示します(技術書典や作者名に関連するタグなどは省きました)。

タグ 回数
プログラミング 28
JavaScript 17
電子工作 15
Android 15
iOS 13
エンジニア 11
Swift 9
自作キーボード 9
AWS 8
Unity 8
React 8
Firebase 7
フロントエンド 7
CSS 7
機械学習 6
TypeScript 6
Python 6
入門書 6
Arduino 5
キーボード 5
クラウド 4
テクニカルイラスト 4
VR 4
Xamarin 4
C# 4
Qt 4
強化学習 4
Web 4
スマートスピーカー 4
ラズパイ 4
SSD 4
C++ 4

感想

実際は、表記ゆれで票がバラけているものがあったり(例えば、Golangなど)、あまり上手くいったとは言えませんが、雰囲気はなんとなくわかるような気がします(現地に行った人は比較してみてほしいです)。

また、4票以下の結果をみたり、BOOTHで見て回ったりした感じだと、各々が好きな(ニッチな)分野に取り組んでいる印象がありました(同人誌なので当たり前といえば当たり前ですが)。

参加者が増加して大変な面も多いとは思いますが、今後もこのような文化・イベントが継続すればいいなあと思っています。

5
9
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
5
9