JQuery の強力な DOM 操作機能を使用してページ データを収集し、 データを整理して POST 形式で自身に送信します。 自身が POST からデータを受信して、それを CSV 形式でファイルに書き込みます。
免責事項: このプログラムは使用のみを目的としています。学習やデモンストレーションの目的で、サンプル内の URL を頻繁に収集しないでください。 対象の Web サイトに無用なトラブルを引き起こさないようにしてください。 誰でもコメントを提供することを歓迎します。
- set_time_limit(0);
- $num = range(0, 49100, 100);
- $base = 'http://www.zjchina.org/mspMajorIndexAction.fo?&startcount=';
- $page = isset($_GET['startcount']) ? $_GET['startcount'] : 0;
- $next_url = $_SERVER['SCRIPT_NAME'].'?startcount='.($page+1);
- if ( !isset($num[$page]) ) { exit('収集完了') }
- //データを送信
- if ( $_POST && count($_POST) && isset($_POST['send' ]) ) {
- $send = $_POST['send'];
- $file = dirname(__FILE__).'/data.csv';
- if ( file_exists($file) ) { unset($send[0]) ; }
- $fp = fopen($file, 'a+');
- foreach($send as $line) { fputcsv($fp, $line) }
- fclose($fp);
- exit(json_encode(array( 'jump' => $next_url)));
- }
-
- //データを取得
- $html = file_get_contents($base.$num[$page]);
- $html = str_replace('script', 'pre ' , $html);
- $html .= '
-
- $(function(){
- var data = [];
- var url = window.location.href;
- var $tr = $("#A5 table tr" ) ;
- $tr.each(function(){
- var tds = [];
- $(this).children("td").each(function(){
- tds.push($(this).text( ) );
- });
- data.push(tds);
- });
- $.post(url, { send: data }, function(ret){
- if ( ret.jump ) {
- window.location. href = ret.jump;
- }
- }, "json");
- });
- ';
- echo $html;
-
コードをコピー
|