読者です 読者をやめる 読者になる 読者になる

PHP_DOMを使ってページにあるZIPファイルなどをダウンロードする

なにやらPHPでHTMLの要素選択をjQueryのように扱えるライブラリがあったので、遊んでみました。
PHP_DOMを使ってページにあるZIPファイルなどをダウンロードすることができます。

<?php
include_once("simple_html_dom.php");
set_time_limit(0);
//対象ページ
$page = "http://ZIPファイルなどがあるページを指定";
//フォルダ作成用変数
$dir = parse_url( $page );
//ページの取得
$html = file_get_html( $page );
//リファラをセットする
$opts = array(
              'http' => array(
                              'method' => "GET",
                              'header' => "Referer: {$page}\r\n"
                              )
              );
$context = stream_context_create($opts);
//リンクの探索
foreach( $html->find('a') as $element ){
    //リンクの分解
    $url = $element->href;
    $pathinfo = pathinfo( $url );
    //ダウンロード対象の選択
    if( $pathinfo["extension"] == "avi" ||
        $pathinfo["extension"] == "mp4" ||
        $pathinfo["extension"] == "flv" ||
        $pathinfo["extension"] == "zip" ||
        $pathinfo["extension"] == "lzh" ){
        //保存先サイトディレクトを作成する
        @mkdir( $dir['host'] );
        //ファイル名指定
        $file_name = "{$dir['host']}/{$pathinfo['basename']}";
        if( !file_exists( $fine_name ) ){
            //ZIPファイルのみダウンロードする
            $file = file_get_contents( $url , false , $context );
            //ファイルを出力する
            file_put_contents( $file_name , $file );
        }
    }
}
?>