こんにちは、フライウィールでプロダクトマネージャーをしているよこいです。
フライウィールは「データを人々のエネルギーに」をミッションに、データを整理したプラットフォームを構築し、そのデータを活用したソリューションを開発しています。
データといえば真っ先に思いつくのはWeb情報、Web情報を取ってくる技術といえばWebスクレイピングですが、私はエンジニアではないので今回は下記のような制限を課してチャレンジしてみました。
ルール
- 弊社フライウィールのTECH BLOGトップページから「タイトル」と「日付」と「記事URL」、各記事の中の「一段落目」の4つ組を取得したい。
- スクレイピングツールの使用は自由だが、その設定などで1行でもコードを書いてはならない。
- 単一OSでしか使えないツールの使用は不可とする(Windows専用ツールなど)。
- フライウィールのTECH BLOGは2ページに渡っているが、2回にわけてスクレイピングをすることは禁止。一回の操作でページネーションのリンクを見て何ページでも取得できるようにする。
- 各記事の中の「一段落目」を取得するのに別途スクレイピングをすることは禁止。リンクの中を見て一回の操作で取得できるようにする。
上記ルールのもとでWebスクレイピングができれば、私も含めエンジニアではない方でもハッピーなスクレイピングライフが楽しめるのではないかと思って色々調べたところ、parsehub というツールが私の要望を満たしてくれることがわかりました!👏
以下、具体的に parsehub の使い方をお話していきます。
parsehubのインストール
- まずアプリケーションをPCにダウンロードします。サイトは英語ですが Download と大きく書いてあるので特にさまようことは無いと思います。
- 「Mac」を選択すると、ダウンロードが始まります。
- ダウンロードしたファイル(parsehub.dmg)を開き、parsehubのアイコンをフォルダにドラッグして「アプリケーション」にファイルをコピーすればインストールは完了です。
アカウントの作成
- アプリケーションを起動し、「Sign up」をクリックし、名前(Name)とメールアドレス(Email)、パスワード(Password)を入力して登録(Register)します。
- メールが送られてくるので、認証(Verify)リンクをクリックします。
スクレイピングの各種設定と実行
- New Project をクリックし、スクレイピングしたいページのURLをコピー&ペーストします(「次へ」などを読み込ませる場合は、その大元のページのURLを貼ります)。今回はTECH BLOGのトップページである https://www.flywheel.jp/blog/ としています。
- 取得したい項目を選択していきます。まずはメインであるブログタイトルとそのURLが欲しいので、そのうちの一つを右画面からクリックします。
- 同じ項目のものをもう一つ選択し、項目右の ✔ をクリックします。そうすると全ての同項目が選択され、下部のリストで確認できます。(もし全てが選択されていなかったり、余分なものが選択された場合は、それらをクリックして調節します。)
- 左のペインの名前は適当にわかりやすい名前に変更しておきます。
ここでは、selection1 → Title としました。 - 次に、Titleに対応するように日付を読み込みます。左ペインのTitleの右の「+」をクリックし、Relative Select を選択します(テーブルなど、関連付けられた項目を取得するときに使います)。選択した後、既に作っている元になる項目(今回はブログタイトル)をクリックしてそれに対応させたい項目(日付)をクリックすると、すべての項目が関連付くのがわかります(ちょっと嬉しくなります)。
- 次のページへのリンクを読み込むことで同じ形の複数ページをスクレイピングすることができます。弊社ブログはまだ2ページですが、こうすることで今後何ページに増えても使い回すことができます。
設定方法は、左ペイン page 右の「+」から Select を選択して次へボタン(≫)をクリックして要素として追加し(図中ではわかりやすくするため名前を button に変更しています)、作成した button の右の「+」から Click を選択します。すると「Click setup」が開き、「次へページ」ボタンか聞いてくるので、Yesを選択して「Repeat Current Template」をクリックします。
- 最後に、一段落目の文章を読み込むために各リンクの中身をたどる必要があります。
Title をクリックして中身を見るため、左ペイン Title 右の「+」から Click を選択します。「Click setup」が開きますが、今度は「次へページ」ではないので No を選択し、Create New Templateをクリックします。すると新しいタブが開いてブログの中のページに遷移しました。
- これまでと同様に、新しいテンプレートに欲しい情報を付与します。ここでは1段落目だけで良いので最初の段落をクリックして終了です。
- 終了です!慣れればここまで5分足らずでいけます!
実際にデータが取れるか、左ペイン下部の「Get Data」→「Test Run」→「▶」をクリックしてテストしてみましょう。するとスクレイピングが順々に走っていくのを目で見ることができます。今回は2つ目以降のブログで1段落目が取れないというハプニングがありました。どうやら1段落目の始まり方が他のブログと異なっていて面倒なことになっていたようです。Test Runを使えばそういった問題も発見することができます。代わりに別のリンクをタブで開いて1段落目を選択してみると、無事に動きました!テストが終わったら「■」で停止するのも忘れずに。
- 最後に本番です!「Get Data」→「Run」をクリックすると、スクレイピングが始まります。待ってるのも暇なので別の作業をしていても良いですし、「Run Datails」の「Pages」で現状何ページ集まったかがわかるのでこの数字が増えるのを眺めてみるのも一興です。作業が終わったらメールでお知らせしてくれるのも嬉しいですね。
終わったらデータを「CSV/Excel」でダウンロードして完了です!
以上で終了です。ルールに従い、一行もコードを書くことなくページネーション対応とクリック先の情報取得まで行うことができました!慣れればすばやく設定してスクレイピングを行うことができますし、非常にオススメです。1
それではみなさま、良いスクレイピングライフを!2