簡単!ウェブスクレイピングでできること

この記事はブログとプログラミングで生計をたてている海外在住ウェブディベロッパーがわかりやすさにこだわって作成しました

ウェブスクレイピングとは

 

ウェブスクレイピングとはIT用語辞書によると、以下のように定義されています。

Webスクレイピングとは、WebサイトからWebページのHTMLデータを収集して、特定のデータを抽出、整形し直すことである。Webスクレイピングを行うことで、Webページを対象として、あたかもWeb APIを利用しているかのようにデータを効率的に取得・収集することが可能になる。用途の例としては、部分的にコンテンツを取り出して携帯電話向けのコンテンツを生成したり、小見出しの一覧を生成したり、といった使い方がある。Webスクレイピングは様々な手段で実現可能であるが、PHPやPerlといったスクリプト言語を使用して行われることが多い。なお「スクレイピング」(scraping)とは元々「削る」や「こすり落とす」といった意味の英語である。 (IT用語辞典より転載)

 

実際にはGOOGLEやYAHOOなどの検索エンジンだけでなく、PHPやPerlまたはPYTHONなどのスクリプト言語を使ってウェブページの情報を収集して業務に役立てているようです。

 

簡単!ウェブスクレイピングプラグイン は、WordPress用に作成した対象のウェブサイトのデータをタグやIDなどで指定することで簡単に取り出すことができるプラグインです。このプラグインをインストールすれば、煩わしいスクリプトを書くことなく簡単にウェブスクレイピングを実現できます。

 

 

当プラグインを使って簡単なデモサイトです。

ニュースサイトから各社主要ニュースをを一覧表示できるようにしたものです。

デモサイト

 

 

 

 

インストール

ダWP-CONTENT→PLUGINSの直下に展開したフォルダsimple-scrapingを配置してください。

プラグイン画面にsimple-scrapingが表示されましたら、有効化のボタンをクリックするだけでインストールは完了です。

 

 

スクレイピングショートコード仕様

 

ショートコードについて

 

ショートコードは、WORDPRESS公式サイトには以下のように定義されています。

A shortcode is a WordPress-specific code that lets you do nifty things with very little effort. Shortcodes can embed files or create objects that would normally require lots of complicated, ugly code in just one line. Shortcode = shortcut. 引用:Shortcodes―WordPress.com

簡単に言うと、短いコードで記事に機能を埋め込むことができる機能です。

 

 

スプレイピングショートコード

 

今回投稿記事や固定ページに任意のサイトから取得した特定のデータを表示する機能を、このショートコードを利用して表示しています。

 

使い方はとても簡単で、ページ内の表示したい場所に以下のコードを埋め込みます。

 

ショートコードのコマンドはscrapeです。

 

urlオプションで対象サイトのURLを、findオプションでスクレイピング条件を指定します。
指定された条件で取得したスクレイピングデータを表示します。
outputオプションで出力対象を指定します。outputオプションにはtext、 attr、 htlm、htmlOuter、lnkimg、img、link、が設定可能で、それぞれテキスト(text)、属性(attr)、HTMLコード(html)、HTMLOUTERコード(htmlOuter)、画像リンク付き、画像、リンクが出力対象になります。
※指定なしの場合は、他のオプションの設定条件によってデフォルトの設定値は変わります。他のオプションが設定されていない場合、デフォルトはテキストになります。
※findオプションは必須です。
※urlオプションは初回は必須です。二回目以降省略すると、直前に指定してURLがデフォルトになります。

[[[scrape url={対象サイトのURL} find= {スクレイピング条件}output= {出力対象}]]]

 

attrオプションを設定すると、属性を指定することができます。
オプションで指定された内容の属性のデータを取得して表示します。
※outputオプションなしの場合、attrオプションが設定されていれば、outputオプションのデフォルトはattrになります。

[[[scrape find={スクレイピング条件} attr={出力対象属性}output="attr" ]]]

 

textオプションを指定すると、出力対象にテキストが指定されます。
オプションに指定された文字列で取得したスクレイピングデータを絞り込むことができます。
※outputオプションなしの場合、textオプションが設定されていれば、outputオプションのデフォルトはtextになります。

[[[scrape -find -text{出力対象文字絞込み条件}output="text" ]]]

 

idオプションを設定すると、お気に入りに登録されたデータを参照してスクレイピングを行います。
idオプションで指定されたidはお気に入りのテーブルidを指します。

[[[scrape -id {お気に入りのid}]]]

 

 

基本的なウェブスクレイピングの方法

 

まず、ウェブスクレイピングは正しい使い方をしてください。公開されているサイトとはいえ、個人で使用する以外に無断で使用することは禁じられています。

 

ここでは、簡単!ウェブスクレイピングプラグインでできる基本的なスクレイピングの条件と出力内容を紹介します。

 

 

find指定

 

タグで抽出する

 

HTMLのタグを指定して検索して合致するデータを出力します

 

用例

h1
h2
p
li
table
tr
td
div

など

 

 

IDで抽出する

 

タグに埋め込まれたIDを名称に#をつけることで指定して検索して合致するデータを出力します

 

用例

h1#id1
table#idtable
tr#id-abc

など

 

 

クラスで抽出する

 

タグに埋め込まれたクラスを名称に.(どっと)をつけることで指定して検索して合致するデータを出力します

用例

h1.class1
table.class2
tr.table-abc

など

 

 

複数タグがあるときに条件を指定して抽出する

 

複数タグがあるときにどのタグか以下のような方法で指定して抽出することができます。

  • 何番目か指定する
  • 最初または最後を指定する
  • 隣接するタグの前や後を指定する
    など

 

用例

h1:eq(5)
table:eq(2)
tr:last

など

 

 

タグやIDまたはクラスをAND条件で抽出する

 

タグやクラスはソース内に複数存在することが多々あります。
その場合は、それらを結合して表現することでAND条件を指定できます。

 

用例

table.class1.class2.class3
table#id_no1

など

 

 

下位階層を絞り込んで抽出する

 

HTMLコードはしばしば目的のコードにたどり着くまで何階層も辿っていかなければならないことがあります。

その場合、それらの条件をスペースで結合して表現することで下位階層の絞り込みができます。

 

用例

※わかりやすくするために半角スペースを三角△に置き換えています。

div△class1△class2△class3
table△tr△td

など

 

 

出力形式を指定

outputオプションを指定することでさまざまな出力形式を選択することができます

 

 

HTMLコードをそのまま出力する

 

条件で抽出したデータをHTMLコードのまま出力します

 

用例

output="html"

 

 

テキストのみ出力する

 

条件で抽出したデータのテキスト部分を出力します

 

用例

output="text"

 

 

画像で出力する

 

条件で抽出したデータを画像として出力します
この場合、FINDオプションでの指定はaタグを指定します
同時にattrオプションにsrcを指定してイメージURLを取得する必要があります

 

用例

attr('src')  output="img"

 

 

指定した文字にリンクをはって出力する

 

条件で抽出したデータのリンクURLからCONTENTオプションで指定した文字にリンクをはって出力します
この場合、FINDオプションでの指定はaタグを指定します
同時にattrオプションにhrefを指定してリンクURLを取得する必要があります

 

用例

content="続く" output="link"

[[[scrape url="https://business.nikkeibp.co.jp/" find="div#topContent ul.articleList a:eq(2)" attr="href" content="続く..." output="link" /]]]

 

 

画像にリンクをはって出力する

 

条件で抽出したデータの画像URLとリンクURLから画像にリンクをはって出力します
【注意】この場合、FINDオプションでの指定はaタグまでを指定します(下位階層のimgタグが取得されます)。またattrオプションは不要です。

 

用例

output="lnkimg"

[[[scrape url="https://business.nikkeibp.co.jp/" find="div#topContent ul.articleList a" output="lnkimg" /]]]

 

 

属性を指定して出力する

 

条件で抽出したデータの特定の属性の内容を出力する

 

用例

attr('src')  output="attr"
attr('href')  output="attr"
attr('style')  output="attr"
など

 

 

スクレイピング登録

 

管理画面メニュー「簡単!スクレイピング」をクリックすると、当プラグインの画面が表示されます。

 

画面上のタブからスクレイピング登録を選択します。

 

スクレイピング対象のサイトのURLと検索条件を入力して、「この条件で検索する」ボタンをクリックします。
スクレイピングを行い、対象のサイトからデータを検索します。スクレイピングに成功すると、「検索結果」のすぐ下に「処理を正常に終了しました」のメッセージが表示され、検索結果欄ににスクレイピングで取得したデーが表示されます。

 

この検索条件をお気に入りに登録したい場合は、タイトル、備考を入力して、「この検索条件をお気に入りに登録する」ボタンをクリックします。
正しくお気に入りに登録されると、以下のメッセージボックスが表示されます。

 

 

 

 

お気に入り情報管理

 

管理画面メニュー「簡単!バックアップ&リストア」をクリックすると、当プラグインの画面が表示されます。

 

画面上のタブからお気に入り管理を選択します。

 

画面をスクロールすると次のようなお気に入り情報の一覧画面が表示されています。
お気に入り情報を編集したい場合、対象のお気に入りのラジオボタンをクリックして選択して、
「お気に入り情報から修正対象を読み込む」をクリックします。

 

確認画面が表示されますので、問題なければ「はい」をクリックします。
対象のお気に入りデータが正常に読み込まれると、画面の各項目が読み込まれたお気に入りデータで更新されます。
※現在編集中のデータは消えますのでご注意ください。

 

修正したお気に入りデータを保存したい場合は、「編集中のお気に入り情報を保存する」をクリックします。
正しく保存されると、「お気に入り情報の更新処理が完了しました」のメッセージが表示されます。

 

 

 

設定

 

管理画面メニュー「簡単!スクレイピング」をクリックすると、当プラグインの画面が表示されます。

 

ここでバックアップおよびリストアで必要な情報を設定します。
変更後、「変更を保存」ボタンをクリックしてください。

 

 

 

PHP/Javascript/WORDPRESS案件全般承ります

オーストラリアで主に日系企業や個人のお客様からのご依頼でお仕事をしております。この記事についてのご質問またはお困りのことがございましたら、お気軽にお問い合わせください。

タイトルとURLをコピーしました