Use JQuery's powerful DOM manipulation capabilities to collect page data, then organize the data and send it to itself in the form of POST, itself receives the data from POST and then writes it to the file in CSV format.
Disclaimer: This program is only for use For learning and demonstration purposes, please do not frequently collect the URLs in the examples; so as not to cause unnecessary trouble to the target website! Everyone is welcome to provide comments
- 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('Collection completed'); }
- //Submit data
- 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)));
- }
-
- //Grab data
- $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;
Copy code
|