Octoparseで自治体のウェブサイトの情報をスクレイピングしてみた

#はじめに
横浜市のウェブサイトに市民の声という市民要望、意見のコーナーがあります。ここにはさまざまな市民の意見が蓄積されてる。数えると総数5000件以上あるがこれをウェブ上で閲覧するのは非常に検索性がない。そこでエクセルファイルに落とし込めば、後はいろいろ自由に検索できると思い方法を探してみた。
#どうやったらいいのだろう？
世の中にはたくさんのウェブサイトがあり、そこにある情報を有効に使われることを待ってるが実際には閲覧性が弱いため十分に利用されてないケースが多いと思われる。そこでウェブスクレイピングという技術を使い、効率よくウェブサイトの情報を収集して、閲覧者がもっとも使いやすい様式に変換する手助けをするツールがあることがわかった。代表的なツールにはOctoparseがあることが分かった。
#Octoparseのインストール
自身のPC環境は、OS：WIndows10、アプリケーション：Octoparse8 で行った。
OSがXPまたは32bitの場合は、バージョンOctoparse 7.3.0が動作します。
64bitではOctoparse 8.1 Betaが動作可能です。
Octopaseのウェブサイト
https://www.octoparse.jp/

1.　Octoparseのダウンロードサイトに行き、無料トライアルを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/f8b5956a-8acb-dd8f-fa5c-6f3e2c1fc84f.png)

2.　アカウント作成をする。使用には必ずアカウントが必要。指示に従って必要な情報を入力。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/8b66bc4d-bba1-7560-a7c9-032f88a7ebc7.png)

3.　アカウント認証のメールの送付、受取り、認証をする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/5cbef303-b824-fe86-0cd8-0821227ca0b9.png)

4. アカウントの認証後に下記のページになります。今回はフリープランを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/b4d828d8-93bf-e104-18ee-c3d38f21dc4c.png)

5. ダウンロードページに移り、今回は機能が向上した8.1 Beta版を選択した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/a7c02f6f-6be1-f977-98bb-377802a8bf5e.png)

6. 自身の環境に合わせてWindows版を選択した。ダウンロードしたzipファイルを解凍して、exeファイルを実行してインストール開始します。手順に従ってインストールを完了させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/24f33da7-fd16-17cc-88e7-57babe45c1cf.png)

7. アプリケーションを開始する。取得したアカウント情報を入力して使用始める。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/1ce8e049-7860-cc33-ee02-b6062d2b7744.png)

8. この画面が見えたでしょうか。フリープランだと確認できればインストール完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/1da3e2a3-f668-cd77-7711-064455abed39.png)


#フリー版で実際の情報収集
実際に使ってみてうまくいった方法を紹介します。

1. 用意するものは、具体的に情報収集したいサイトのURLです。今回は横浜市のウェブサイト内にある「市民の声」の公開ページです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/1baf6d4a-2a5a-18d9-0da0-6b1dd4aa9e93.png)


2. 意見の全件数は現在5239件あります。これを効率よく取得するために1ページ50件をページネーションで100ページくらいを繰り返し読み出しする必要があります。その条件の検索後のページのURLを取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/ebb43433-21a8-4faa-5ca6-5c7b8203d761.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/54f4d337-3a65-d63a-878c-3d4f2f6a3021.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/87657d70-4fdd-773c-b465-5964bd25fd3a.png)
検索後のページが取得できました。このページのURLをコピーして控えます。

3. これから実際のOctoparseで情報抽出します。先ほどコピーしたURLを入力して、それから抽出開始ボタンをオン！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/cdcdab50-9db0-d1b2-fd50-518985142f77.png)

4. この画面で実際に抽出する情報を選んでいきます。画面の説明です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/95ecf219-e7d2-a7c3-18b2-6651ca5d6be7.png)

5. 操作ヒントにある「Webページを自動識別」を使ってみましょう。このように識別が始まります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/9cf1a838-837e-233b-efb5-c36843e4d204.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/5218a55c-2bc1-7485-96f3-aec32167ea50.png)

6. いくつかの識別結果が得られました。ここで識別結果を選択できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/6e916a04-bc2b-c0cc-5088-5060b14cf85e.png)

7. 2番目の識別結果を都合よさそうです。これを選択しましょう。それから「ワークフローを生成」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/facbcb5c-f7ee-1f1e-7313-d27a7125b224.png)

8. ワークフローの説明です。上から順番にまず指定されたURLのページを開き、そのなかでページの構成を解析して、ページネーションを認識します。そのページの中で指定された情報の抽出の繰り返し(ループ)をして1ページ内にある50個の情報を抽出します。それからページネーションの次ページをクリックするようOctoparseからWebサーバーに自動操作します。それを繰り返すことで100ページ分の抽出を繰り返し(ループ)します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/2cb238b9-e89e-a177-c708-635556f0e3d6.png)

9. このワークフローを確定するために「保存して実行」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/d74fb959-cf70-3b65-b05a-a2eb9ae2f970.png)

10. このような画面が現れます。ここで選択後に実際のWebサイトで抽出作業が開始されます。今回はローカル抽出を選びます。データの抽出が始まります。件数が長い場合は時間がかかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/4f5dbc7c-61ef-a148-2218-def55c9a5429.png)

11. データの抽出後にこの画面が現れます。エクスポートを選び、フォーマットにExcel(xlsx)を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/b3d26615-7329-81ca-1c2f-a23498e5a97d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36699/6f7b7685-ab1f-6ebf-dc1a-06499616e04d.png)

12. 無事にエクセルファイルをローカルに保存できてOctoparseの操作は完了です。ファイルを確認すると、市民の声のそれぞれのタイトル、その詳細が載ってるURL、シリアル番号1～5000が生成されていることが確認できました。

#フリー版の限界
フリー版でもしっかりスクレイピングできた。フリー版の制限としてデータエクスポート10,000レコード/回、並行ローカルタスク数2個、作れるタスク数10個とあります。今回実際に行った抽出でも5239個あった情報のうち、5000個しか抽出できなかったのはこの制限によることかもしれません。。？

#今後の発展
様々なウェブサイトをめぐり有用な情報を一覧化したい。または定期的に同一項目の情報を抜き出すクローリングにも挑戦したい。