PHPでyoutubeから更新分の情報を取得する(スクレイピング)
2014/07/04
「○○のサイトから自動更新分を持ってきて
自サイトに反映させらへん?」と以前に聞かれたことがあって、
調べてみたのでメモ。
テストの条件として、
・取得先はyoutube
・検索ワードである程度絞る
■ソース
<?php
$url = 'ここにURL'; //検索クエリ付きのURLでOK
$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');
$pattern="/<a class=\".*?\"[\n|\s]*dir=\".*?\"[\n|\s]*title=\"(.*?)\"[\n|\s]*data-sessionlink=\".*?\"[\n|\s]*href=\".*?v=(.*?)\"[\n|\s]*>/"; //正規表現でほしい情報を抜き出す。動画のIDっぽいのとタイトルを抜き出した
$match = array();
preg_match_all($pattern, $line, $match, PREG_SET_ORDER);
for ($i = 0; $i< count($match); $i++) {
$title = $match[$i][1]; //タイトルが格納される
$url = $match[$i][2]; //動画のIDが格納される
}
?>
ひっぱってきた情報をMySQLなりなんなりに突っ込む。
更新に関してはcronまわせばOK。