対象読者
- WEBサイトから多数の情報を取得したいけどコード書いてスクレイピングするの面倒という人
- Octoparseの使い方が全く分からないという人
何度か地道にコードを書いてスクレイピングを行って「WEBサイト毎にコードを書くのがさすがに面倒!」と思った際に出会ったWEBクローラー・octoparseに関しての備忘録です.
スクレイピング?クローラー?
スクレイピングとは
- 主にAPIが用意されていないサイトの情報を取得する際に使用
- HTML等の人間が直接読むのに適さないデータ群から必要な情報だけを抽出する際に用いられる技術
octoparseとは
- スクレイピングがものすごく簡単にできるWebクローラーの一つ
- 人間の操作をシュミレートすることで複雑な操作も自動化
- 静的,動的どちらのWebサイトにも対応
- 無料版でも十分な機能が搭載
スクレイピングを行う前に
- クローリングが禁止されていないサイトか確認
- サイトのルートディレクトリに用意されている「robots.txt」ファイルを確認し,以下のように書かれている場合は「サイト全体でクローリングしないで」という意思表示なのでクローリング,スクレイピングを行わない.
User-agent: * Disallow: /
- HTML内に以下のような「robots metaタグ」が書かれている場合も「このページ内のリンクをたどらないで」という意思表示なのでクローリング,スクレイピングを行わない
<meta name="robots" contest="nofollow">
- 著作権違反していないか確認
当たり前ですがスクレイピングが大丈夫だからと言ってフリーではないので使い方に注意
基本的な使い方
スクレイピングしたいWebサイトを指定する
- ホーム画面からカスタマイズモードの+タスクを選択
- Webサイトの欄に,データを抽出したいWebサイトのページのURLを張り付け,保存
データを抽出する
- 張り付けたURLのページが表示されるため,欲しい部分をクリック(まとめて選択することも可能)
- 同じ系統の情報は,2つ以上クリックすると勝手に全部選択してくれる.
- 「リンクのテキストを抽出」をクリックするとループアイテムが作成される
複数のリンクの中身が欲しい場合
- データが欲しいページのリンクの一覧があるページで全てのリンクを選択
- 「各URLをループクリックする」を選択するとループアイテムが作成され,ページが切り替わる
- 抽出したいデータをクリックし,「データを抽出する」をクリックすると,ループアイテム内に「データを抽出する」が現れる
複数ページにまたがってスクレイピング
ページネーションに矢印がある場合
- サイトの下の方に行き,ページをめくるリンク(ページネーション)があることを確認する
- ページネーションに次のページに行く矢印や「次へ」等がある場合,それをクリックして「選択したリンクをループクリックする」をクリックするとページネーションアイテムが作成される
- ページネーションアイテム内にデータ抽出を行うアイテムを入れることで複数ページに渡ってデータを抽出することが可能
ページネーションに矢印がない場合
- 上記の矢印がある場合と同じ手順でページネーションアイテムを作成する
- アイテム内の単一要素のXpathを以下のように変更する
- データを抽出したいページのソースを開いて,ページ番号を表しているコードを探す
<div class="paginator section"> <span class="count">110,230</span> <span class="unit">件</span> <span class="current">1</span><span><a href="/novel/index?sort=total&limit=120&page=2&direction=desc">2</a></span><span><a href="/novel/index?sort=total&limit=120&page=3&direction=desc">3</a></span>
- 上記の場合,classを目印にして以下のようにXpathを記述することで複数ページのスクレイピングが行える
//span[@class='current']/following-sibling::span/a
抽出したくないデータをはじく
- アイテム「データを抽出する」をクリックすると右側にトリガーという欄が現れるので,そこをクリック
- 「新しいトリガーを作成する」をクリックして,トリガー名を設定
- 「もし」の下のボタンを選択すると抽出するフィールドが全て表示されるので,条件を追加したいフィールドを選択
- 鉛筆マークの横のボタンで条件を指定
- 複雑な条件を付けたい場合も「[AND]条件を追加」もしくは「[OR]条件を追加」ボタンで条件を追加
- 最後に画面下部の「このデータを破棄する」ボタンから条件に合った場合どうするかを選択する
- 抽出データを成形して判定を行いたい場合は,以下の手順で行うことができる
- 抽出データから数字のみを抜き取りたい場合
7.1. トリガーを編集する画面で鉛筆マークをクリック
7.2. フィールド編集画面でステップを追加するをクリックし,正規表現で置き換えるをクリック
7.3 正規表現の欄に数字以外を表す[^0-9]を入力し,計算するをクリックし,数字だけ出力できていれば成功
- 抽出データから数字のみを抜き取りたい場合
引用