摘要:简易抓取国家统计局的省市信息注代码异常处理有待完善不喜勿喷。感谢超时设置抓取地址匹配异常得到省份信息获取城市信息拼凑城市信息请求地址市辖区请求设置抓取的设置头文件的信息作为数据流输出设置获取的信息以文件流的形式返回,而不是直接输出。
简易抓取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); } 文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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语言实现简单小游戏---扫雷
阅读 2096·2021-11-16 11:45
Vollcloud:双十一优惠,香港CMI线路,7.5折,100M-200M带宽,免费更换原生IP
阅读 1131·2021-10-22 09:53
Krypt九月:云服务器$120/年,2vCPU/2GB/60GB SSD/3TB,支持Window
阅读 3955·2021-09-07 10:26
初学 go 入门-案例-教程-记录(4)了解基础语法,了解运算
阅读 1181·2021-09-06 15:00
小技巧 - 如何做到让一个元素在禁用JavaScript时和启用JavaScript时有不同的样式
阅读 2054·2019-08-28 18:09
小程序运行机制 前台/后台状态
阅读 2770·2019-08-26 14:06
解决antd-mobile样式被postcss转换的问题
阅读 3892·2019-08-26 13:48
原生JavaScript事件处理程序汇总
阅读 1280·2019-08-26 12:11
阅读需要支付1元查看