<?php
require_once 'simple_html_dom.php';//ライブラリを読みこませるために一行追加
$url = "http://open2ch.net/dev/toukei.cgi?m=thread&d=2015-10-10&bbs=news4vip&sort=time";
tokei_dat_get($url);//統計君からdatを持ってくる関数
//タイムオーバー防ぐ
set_time_limit(0);
//統計君URLを指定してdatを持ってくる関数
function tokei_dat_get($url){
//統計君取得
$contents = web_get($url);
$html = str_get_html($contents);//html_domのライブラリで読み込める形にして取得
$ret = $html->find( 'div' )[ 9 ]->find('a');//10番目にあるdiv内のアンカー要素を全部取得
foreach ($ret as $element) {
$url_li = preg_replace('/[!l10]+$/u', '', $element->href);//l10を空白に置き換える正規表現
$dat_preg = "/\w+:\/\/\w+\.\w+\.\w+\/\w+\/\w+\.\w+\/(\w+)\/(\d+)\//";//スレッドURLから板名とスレッド番号を抜き出す正規表現
$dat_url = preg_replace($dat_preg, "http://open2ch.net/$1/dat/$2.dat", $url_li);//スレッドURLをdatのURLに変換
$dat_name = preg_replace($dat_preg, "$2", $url_li);//ファル名ようにスレッドの番号を取得
$dat_text = web_get($dat_url);//datを取得
//$dat_text = mb_convert_encoding($dat_text, "UTF-8", "SJIS");//SJISからUTF-8にエンコード
file_put_contents("dat/news4vip/".$dat_name.".dat", $dat_text);//取得したdatを保存
print($dat_name.".dat\n");//保存されたdatのファイル名
$time = mt_rand(1, 10);//時間を1~10の間でランダムで生成
sleep($time);//ランダム生成された数字の分だけスリープ
print($time."\n\n");//スリープされた時間を表示
}
}
//URL接続用
function web_get($url){
//UAを設定
$options = array(
'http' => array(
'method' => 'GET',
'header' => 'User-Agent: test)',
),
);
$context = stream_context_create($options);//ヘッダーを指定
for ($i=0; $i < 5; $i++) {
if($html = @file_get_contents($url,false,$context)){//失敗したらfalseが返ってくる
return $html;//成功したらそのまま取得したものを返す
}
}
return false;//失敗したらfalseを返す
}