pythonでconnpassのユーザーグループ数とメンバー数を取得してみた

# はじめに
[connpass](https://connpass.com/)のユーザーグループの数と所属人数が気になり、pythonでスクレイピングしました。
結論から言うと、***すべてのグループは取得できませんでした***が、一連の流れを書いていこうと思います。

# データの収集方法
connpassには[api](https://connpass.com/about/api/)が用意されていますが、イベント検索用のみでしたので今回は使用できませんでした。

そのため、今回はconnpassの新着グループ画面からデータを取得していきました。
URLはpageのパラメータが連番になっており、MAXは200ページであることは事前に確認しました。
(page=1000などにしてアクセスして、MAXを調べました)

また、残念ながら公開日が2018/02/06までのみで、それ以前は取得できませんでした。

<img width="997" alt="スクリーンショット 2019-02-06 10.17.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/226008/a12b8aeb-e867-9d18-955b-cd014a25873e.png">

# プログラム
git hub
https://github.com/nsuzuki7713/scraping/blob/master/connpass_group/connpass_group.py

特に難しいことはしていないです。
URLにアクセスして、HTMLをパースし、CSVに書き出す流れとなります。
次ページにアクセスするときは、負荷を考え1秒waitしています。

``` py:connpass_group.py
# 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

| 公開日     | グループ名                         | URL                                              | 人数 |
|------------|------------------------------------|--------------------------------------------------|------|
| 2018/02/20 | RPA Community                      | https://rpacommunity.connpass.com/               | 1751 |
| 2018/07/24 | SHIBUYA BIT VALLEY                 | https://sbv.connpass.com/                        | 1644 |
| 2018/06/26 | Neutrino                           | https://neutrino.connpass.com/                   | 1308 |
| 2018/04/26 | Cloud Native Meetup Tokyo          | https://cloudnative.connpass.com/                | 1036 |
| 2018/03/26 | CryptoAge                          | https://cryptoage.connpass.com/                  | 1011 |
| 2018/05/11 | HashHub                            | https://hashhub.connpass.com/                    | 769  |
| 2018/04/05 | Flutter Japan User Group           | https://flutter-jp.connpass.com/                 | 768  |
| 2018/07/23 | Mercari Dev                        | https://mercaridev.connpass.com/                 | 754  |
| 2018/03/16 | NuxtMeetup                         | https://nuxt-meetup.connpass.com/                | 753  |
| 2018/05/09 | HTML5 APP CONFERENCE               | https://html5app-conf.connpass.com/              | 743  |
| 2018/04/01 | コネヒト／Connehito Inc.           | https://connehito.connpass.com/                  | 703  |
| 2018/05/09 | CryptoBowl                         | https://cryptobowl.connpass.com/                 | 645  |
| 2018/08/06 | X-HACK東京                         | https://x-hack.connpass.com/                     | 635  |
| 2018/02/28 | くじらや                           | https://docker.connpass.com/                     | 612  |
| 2018/09/05 | IIJ Technical Seminar              | https://iij.connpass.com/                        | 611  |
| 2018/09/13 | IIJmio                             | https://iijmio.connpass.com/                     | 594  |
| 2018/03/11 | Liberal Arts for Beginners         | https://liberal-arts-beginners.connpass.com/     | 585  |
| 2018/07/09 | Repro Tech Meetup                  | https://repro-tech.connpass.com/                 | 576  |
| 2018/05/15 | 全脳アーキテクチャ勉強会           | https://wba-meetup.connpass.com/                 | 553  |
| 2018/03/01 | Roppongi.js                        | https://roppongi-js.connpass.com/                | 552  |
| 2018/05/20 | techain（テックチェーン）          | https://techtec.connpass.com/                    | 549  |
| 2018/02/15 | InHouseDesigners                   | https://in-house-designers.connpass.com/         | 549  |
| 2018/08/02 | エンジニアの登壇を応援する会       | https://engineers.connpass.com/                  | 543  |
| 2018/06/12 | Tokyo.R                            | https://tokyor.connpass.com/                     | 509  |
| 2018/04/20 | Interfaceオフ会                    | https://inteface-meet-up.connpass.com/           | 509  |
| 2018/08/10 | 銀座Rails                          | https://ginza-rails.connpass.com/                | 492  |
| 2018/04/20 | s-dev talks                        | https://s-dev-talks.connpass.com/                | 486  |
| 2018/03/10 | 全人類がわかる統計学               | https://to-kei.connpass.com/                     | 464  |
| 2018/05/25 | ReDesigner                         | https://redesigner.connpass.com/                 | 457  |
| 2018/11/04 | Engineering Manager Meetup         | https://engineering-manager-meetup.connpass.com/ | 452  |
| 2018/07/30 | DDD-Community-Jp                   | https://ddd-community-jp.connpass.com/           | 441  |
| 2018/06/26 | アドフラウド勉強会                 | https://adfraud-study-group.connpass.com/        | 431  |
| 2018/08/04 | Cloud Native JP                    | https://cnjp.connpass.com/                       | 429  |
| 2018/04/22 | SI業界出身のWEBエンジニアたち      | https://ex-sier.connpass.com/                    | 408  |
| 2018/07/09 | UX道場                             | https://uxdojo.connpass.com/                     | 407  |
| 2018/05/11 | D Empowerment Lab                  | https://d-empowerment.connpass.com/              | 407  |
| 2018/06/13 | Designer X Engineer Lovers（DXEL） | https://engineers-x-designers.connpass.com/      | 403  |
| 2018/06/12 | OpsSecJAWS                         | https://opssecjaws.connpass.com/                 | 398  |
| 2018/04/21 | 3D勉強会@関東                      | https://3dvision.connpass.com/                   | 393  |
| 2018/06/19 | UTokyo IST                         | https://u-tokyo-ist.connpass.com/                | 388  |

# 最後に
1時間ほどで作ったもので、中途半端なデータになってしまいました。
次はもう少し多くのグループを取得できるようにしたいと思います。

## 参考URL
PythonとBeautiful Soupでスクレイピング
https://qiita.com/itkr/items/513318a9b5b92bd56185

Python Webスクレイピング 実践入門
https://qiita.com/Azunyan1111/items/9b3d16428d2bcc7c9406