1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WEBクローラー・Octoparseについての備忘録

Last updated at Posted at 2022-03-05

対象読者

  • WEBサイトから多数の情報を取得したいけどコード書いてスクレイピングするの面倒という人
  • Octoparseの使い方が全く分からないという人

何度か地道にコードを書いてスクレイピングを行って「WEBサイト毎にコードを書くのがさすがに面倒!」と思った際に出会ったWEBクローラー・octoparseに関しての備忘録です.

スクレイピング?クローラー?

スクレイピングとは

  • 主にAPIが用意されていないサイトの情報を取得する際に使用
  • HTML等の人間が直接読むのに適さないデータ群から必要な情報だけを抽出する際に用いられる技術

octoparseとは

  • スクレイピングがものすごく簡単にできるWebクローラーの一つ
  • 人間の操作をシュミレートすることで複雑な操作も自動化
  • 静的,動的どちらのWebサイトにも対応
  • 無料版でも十分な機能が搭載

スクレイピングを行う前に

  • クローリングが禁止されていないサイトか確認
    • サイトのルートディレクトリに用意されている「robots.txt」ファイルを確認し,以下のように書かれている場合は「サイト全体でクローリングしないで」という意思表示なのでクローリング,スクレイピングを行わない.
    User-agent: *
    Disallow: /
    
    • HTML内に以下のような「robots metaタグ」が書かれている場合も「このページ内のリンクをたどらないで」という意思表示なのでクローリング,スクレイピングを行わない
    <meta name="robots" contest="nofollow">
    
  • 著作権違反していないか確認
    当たり前ですがスクレイピングが大丈夫だからと言ってフリーではないので使い方に注意

基本的な使い方

スクレイピングしたいWebサイトを指定する

  1. ホーム画面からカスタマイズモードの+タスクを選択
  2. Webサイトの欄に,データを抽出したいWebサイトのページのURLを張り付け,保存

データを抽出する

  1. 張り付けたURLのページが表示されるため,欲しい部分をクリック(まとめて選択することも可能)
    • 同じ系統の情報は,2つ以上クリックすると勝手に全部選択してくれる.
  2. 「リンクのテキストを抽出」をクリックするとループアイテムが作成される

複数のリンクの中身が欲しい場合

  1. データが欲しいページのリンクの一覧があるページで全てのリンクを選択
  2. 「各URLをループクリックする」を選択するとループアイテムが作成され,ページが切り替わる
  3. 抽出したいデータをクリックし,「データを抽出する」をクリックすると,ループアイテム内に「データを抽出する」が現れる

複数ページにまたがってスクレイピング

ページネーションに矢印がある場合

  1. サイトの下の方に行き,ページをめくるリンク(ページネーション)があることを確認する
  2. ページネーションに次のページに行く矢印や「次へ」等がある場合,それをクリックして「選択したリンクをループクリックする」をクリックするとページネーションアイテムが作成される
  3. ページネーションアイテム内にデータ抽出を行うアイテムを入れることで複数ページに渡ってデータを抽出することが可能

ページネーションに矢印がない場合

  1. 上記の矢印がある場合と同じ手順でページネーションアイテムを作成する
  2. アイテム内の単一要素のXpathを以下のように変更する
    1. データを抽出したいページのソースを開いて,ページ番号を表しているコードを探す
    <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&amp;limit=120&amp;page=2&amp;direction=desc">2</a></span><span><a href="/novel/index?sort=total&amp;limit=120&amp;page=3&amp;direction=desc">3</a></span>
    
    1. 上記の場合,classを目印にして以下のようにXpathを記述することで複数ページのスクレイピングが行える
    //span[@class='current']/following-sibling::span/a
    

抽出したくないデータをはじく

  1. アイテム「データを抽出する」をクリックすると右側にトリガーという欄が現れるので,そこをクリック
  2. 「新しいトリガーを作成する」をクリックして,トリガー名を設定
  3. 「もし」の下のボタンを選択すると抽出するフィールドが全て表示されるので,条件を追加したいフィールドを選択
  4. 鉛筆マークの横のボタンで条件を指定
  5. 複雑な条件を付けたい場合も「[AND]条件を追加」もしくは「[OR]条件を追加」ボタンで条件を追加
  6. 最後に画面下部の「このデータを破棄する」ボタンから条件に合った場合どうするかを選択する
  7. 抽出データを成形して判定を行いたい場合は,以下の手順で行うことができる
    • 抽出データから数字のみを抜き取りたい場合
      7.1. トリガーを編集する画面で鉛筆マークをクリック
      7.2. フィールド編集画面でステップを追加するをクリックし,正規表現で置き換えるをクリック
      7.3 正規表現の欄に数字以外を表す[^0-9]を入力し,計算するをクリックし,数字だけ出力できていれば成功

引用

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?