摘要:簡易抓取國家統計局的省市信息注代碼異常處理有待完善不喜勿噴。感謝超時設置抓取地址匹配異常得到省份信息獲取城市信息拼湊城市信息請求地址市轄區請求設置抓取的設置頭文件的信息作為數據流輸出設置獲取的信息以文件流的形式返回,而不是直接輸出。
簡易抓取2018國家統計局的省市信息 注:代碼異常處理有待完善,不喜勿噴。感謝
header("Content-Type: text/html;charset=UTF-8"); // 超時設置 ini_set("max_execution_time", "0"); //抓取地址 $url = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/"; $data = curlGet($url); $data = iconv("GBK", "UTF-8//IGNORE",$data); preg_match_all("/provincetr">(.*?)/", $data, $matches); if (empty($matches)) { return "匹配異常"; } $data2show = returnArr($matches[1]); //得到省份信息 foreach ($data2show as $key => $val) { preg_match("/="(d{2}).html/", $val, $sz); preg_match("/">(.{1,30})
$val) { //拼湊城市信息請求地址 $cityUrl = $url.$key.".html"; $data = curlGet($cityUrl); $data = iconv("GBK", "UTF-8//IGNORE",$data); preg_match_all("/citytr">(.*?)/", $data, $matches); foreach($matches[1] as $k => $v){ // echo $v;exit; preg_match_all("/="(d{2})/(d{4}).html">(.*?)/", $v, $info); $city[$key][$k]["province_code"] = $info[1][1]; $city[$key][$k]["province_name"] = $val; $city[$key][$k]["city_code"] = $info[2][1]; $city[$key][$k]["city_name"] = ($info[3][1] === "市轄區") ? $val : $info[3][1]; // print_r($city);exit; } // $cityData[$key] = $matches[1]; } $cityArr = arr2ToArr1($city); export_csv($cityArr);exit; //curl get請求 function curlGet($url) { $curl = curl_init(); //設置抓取的url curl_setopt($curl, CURLOPT_URL, $url); //設置頭文件的信息作為數據流輸出 // curl_setopt($curl, CURLOPT_HEADER, 1); //設置獲取的信息以文件流的形式返回,而不是直接輸出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //執行命令 $data = curl_exec($curl); //關閉URL請求 curl_close($curl); //顯示獲得的數據 return $data; } //傳入內容,返回數組 function returnArr($content) { foreach ($content as $key => $val) { $arr[$key] = explode("", "<" . trim($val, " ")); } $data2show = arr2ToArr1($arr); return $data2show; } //二維數組轉化成一維數組 function arr2ToArr1($arr) { return array_reduce($arr, "array_merge", array()); } //數據導出到csv function export_csv($data) { $path = $_SERVER["DOCUMENT_ROOT"]."/csv/".date("Y-m-d",time())."/"; if (!is_dir($path)){ //判斷目錄是否存在 不存在就創建 mkdir($path,0777,true); } $filename = $path.time().".csv"; //設置文件名 header( "Content-Type: text/csv;charset=utf-8" ); header( "Content-Disposition: attachment;filename="$filename"" ); header("Pragma: no-cache"); header("Expires: 0"); $fp= fopen($filename, "w"); // 對于用 wps 和編輯器打開無亂碼但是用 excel 打開出現亂碼的問題,可以添加以下一行代碼解決問題 fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF)); foreach ($data as $fields) { fputcsv($fp, $fields); } fclose($fp); } 文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31745.html
相關文章
實戰PHP導出Excel-CSV文件
摘要:中國大陸幾乎所有的中文系統和國際化的軟件都支持。與相應的國家標準中的其它漢字,以上合計個漢字。,全稱國家標準信息技術中文編碼字符集,是中華人民共和國現時最新的內碼字集,是信息技術信息交換用漢字編碼字符集基本集的擴充的修訂版。 實戰PHP導出Excel-CSV文件 導出后的效果 先給各位看一下導出的效果,而后再進行代碼分析 showImg(https://segmentfault.co...
實戰PHP導出Excel-CSV文件
摘要:中國大陸幾乎所有的中文系統和國際化的軟件都支持。與相應的國家標準中的其它漢字,以上合計個漢字。,全稱國家標準信息技術中文編碼字符集,是中華人民共和國現時最新的內碼字集,是信息技術信息交換用漢字編碼字符集基本集的擴充的修訂版。 實戰PHP導出Excel-CSV文件 導出后的效果 先給各位看一下導出的效果,而后再進行代碼分析 showImg(https://segmentfault.co...
發表評論
0條評論
timger
男|高級講師
TA的文章
閱讀更多
C語言實現簡單小游戲---掃雷
閱讀 2113·2021-11-16 11:45
Vollcloud:雙十一優惠,香港CMI線路,7.5折,100M-200M帶寬,免費更換原生IP
閱讀 1184·2021-10-22 09:53
Krypt九月:云服務器$120/年,2vCPU/2GB/60GB SSD/3TB,支持Window
閱讀 4002·2021-09-07 10:26
初學 go 入門-案例-教程-記錄(4)了解基礎語法,了解運算
閱讀 1209·2021-09-06 15:00
小技巧 - 如何做到讓一個元素在禁用JavaScript時和啟用JavaScript時有不同的樣式
閱讀 2073·2019-08-28 18:09
小程序運行機制 前臺/后臺狀態
閱讀 2795·2019-08-26 14:06
解決antd-mobile樣式被postcss轉換的問題
閱讀 3934·2019-08-26 13:48
原生JavaScript事件處理程序匯總
閱讀 1296·2019-08-26 12:11
閱讀需要支付1元查看