アダルトサイト作成

アダルトサーバ

アダルトASP

よくある質問

お役立ちテクニック

相互リンク

スクレイピング

PHPでのスクレイピング

PHPでのスクレイピングについて記載します。

まずスクレイピングとは何か。スクレイピングとは、英語で「scrape」=「削る」から作られた造語です。WEBページから必要な部分の情報を取得して利用することを意味しています。

スクレイピングを用いれば、WEB上の欲しい情報をまとめ、自サイトのコンテンツとして提供することができます。
具体的にアダルトサイトを例にしていうと、WEB上にあるたくさんのアダルト動画投稿サイトの共有タグ(ifarme、js等)のHTMLタグを集めてそれをコンテンツして提供することができます。近年話題となった2ちゃんねるまとめサイト等もスクレピングで作成されています。スクレイピングでの情報収集は、著作権について調べてから行うようにしましょう。
※2012年7月のgoogleパンダアップデートによりスクレイピングサイトの検索順位は落ちると公開されました。

スクレイピングのPHPサンプル

PHPでのスクレイピングのサンプルソースを記述します。

サンプルは、XVIDEOS(https://www.xvideos.com/)のTOPページに表示されている画像、動画ID、動画タイトルを取得/表示するプログラムです。IDを組み合わせてiframeタグを作成すれば動画を参照することも可能です。サンプルは文字コード「UTF-8」で取得する場合のソースです。ご使用環境の文字コードに変換するようにしてください。

PHPでのスクレイピングで重要なのは、file_get_contents()関数です。指定したファイルの内容を文字列で全て取得することができます。この関数を使用してURLからページ情報を取得します。

<?php

// スクレイピングしたいページのURL
$url = "https://www.xvideos.com/";

// ページ内容取得
$line = file_get_contents($url);
$line = mb_convert_encoding($line,'UTF-8','auto');

// パターン定義(欲しいソースの正規表現を記述)
$pattern="/<img[\s]src=\"(.*?)\"[\s]id=\"pic_([0-9]+)\".*?<a[\s]href=\".*?\">(.*?)<\/a>/";

// 抽出先初期化
$match = array();

// ページ情報からパターン定義にマッチするものを抽出
preg_match_all($pattern, $line, $match, PREG_SET_ORDER);

// マッチした数
$count = count($match);

// マッチした数だけループ
for ($i = 0; $i< $count; $i++) {

// マッチした内容を変数代入
  $jpgurl = $match[$i][1];
  $movieid = $match[$i][2];
  $moviename = $match[$i][3];

// 取得したJPGURL、ID、動画名を表示
  echo "$jpgurl<br>";
  echo "$movieid<br>";
  echo "$moviename<br>";

}

?>

投稿されている動画にも著作権が存在しますので、スクレイピングした内容を公開する際は、注意してください。


※追記

スクレイピングサイトを製作している段階で、上記で紹介している方法より3倍近く速度が速く、同じ要領でスクレイピングできる方法があったので紹介しておきます。

その方法はずばり「file_get_contents」ではなく、「cURL」を使用するということです。

使用方法も簡単で、上記で紹介しているサンプルの「ページ内容取得」部分を以下に変更するだけです。

// ページ内容取得
$ch = curl_init(); // 初期化
curl_setopt($ch, CURLOPT_URL, $url); // オプションを設定
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$line = curl_exec($ch); // 実行してデータを得る
$line = mb_convert_encoding($line,'UTF-8','auto');// 文字コード変換

3行ほど多く記述が増えますが、速度アップするなら気にならないと思います。。。

詳しいオプションについての説明はこちら


<< 「お役立ちテクニック /備忘メモ」に戻る

▲ページトップに戻る