はじめに
connpassのユーザーグループの数と所属人数が気になり、pythonでスクレイピングしました。
結論から言うと、すべてのグループは取得できませんでしたが、一連の流れを書いていこうと思います。
データの収集方法
connpassにはapiが用意されていますが、イベント検索用のみでしたので今回は使用できませんでした。
そのため、今回はconnpassの新着グループ画面からデータを取得していきました。
URLはpageのパラメータが連番になっており、MAXは200ページであることは事前に確認しました。
(page=1000などにしてアクセスして、MAXを調べました)
また、残念ながら公開日が2018/02/06までのみで、それ以前は取得できませんでした。

プログラム
git hub
https://github.com/nsuzuki7713/scraping/blob/master/connpass_group/connpass_group.py
特に難しいことはしていないです。
URLにアクセスして、HTMLをパースし、CSVに書き出す流れとなります。
次ページにアクセスするときは、負荷を考え1秒waitしています。
# coding: UTF-8
import urllib.request, urllib.error
from bs4 import BeautifulSoup
import csv
from time import sleep
# csvファイルの準備
f = open('group-list-20180206.csv', 'a')
writer = csv.writer(f, lineterminator='\n')
writer.writerow(["公開日","グループ名","URL","人数"])
count = 0
# 200pageループする
for i in range(201):
url = "https://connpass.com/recent_group/?page=" + str(i+1)
html = urllib.request.urlopen(url)
soup = BeautifulSoup(html, "html.parser")
# 1グループはseries_listのclassにある
list = soup.find_all("div", class_="series_list")
for val in list:
# 公開日、グループ名、URL,人数を取得
csv_list = []
csv_list.append(val.select(".date")[0].string.replace('公開日: ', ''))
csv_list.append(val.select(".title")[0].string)
csv_list.append(val.select(".title > a")[0].get('href'))
csv_list.append(val.select(".amount")[0].string)
# csvファイルに出力
writer.writerow(csv_list)
count = count + 1
# 次ページに行く際は1秒待つ
sleep(1)
print("グループ数:" + str(count))
f.close()
$ python connpass_group.py
グループ数:2008
抽出データ
人数が多いグループをピックアップしました。
抽出したデータはcsvでこちらに置いておきます。
https://github.com/nsuzuki7713/scraping/blob/master/connpass_group/group-list-20180206.csv
最後に
1時間ほどで作ったもので、中途半端なデータになってしまいました。
次はもう少し多くのグループを取得できるようにしたいと思います。
参考URL
PythonとBeautiful Soupでスクレイピング
https://qiita.com/itkr/items/513318a9b5b92bd56185
Python Webスクレイピング 実践入門
https://qiita.com/Azunyan1111/items/9b3d16428d2bcc7c9406