项目需要,简单写了一个抓取全国行政区划的代码。

class AreaCodeCtrl extends Controller{static function getSubstr($str, $leftStr, $rightStr){$llen = strlen($leftStr);$left = strpos($str, $leftStr);$right = strpos($str, $rightStr,$left + $llen);if($left <0 || $right < $left)return "";return substr($str, $left+$llen, $right - $left-$llen);}public function area(){$prv = [['name'=>'湖北省','code'=>'42','cat'=>'000'], // 有字符集问题.];// http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/foreach($prv as $item) {$data = new Area(['code'=>$item['code'].'0000000000','name'=>$item['name'],]);$data->save();Self::GetCode("http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/{$item['code']}.html");}//Self::GetCode("http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/43.html");}private static function GetCode($url){$raw = http_read($url);try {$raw = iconv('gbk','utf-8//IGNORE',$raw);}catch(ErrorException $e){echo "iconv error \n";}$html = Self::getSubstr($raw,'名称</td>','</TD>');$dec = Self::getSubstr($html,"<tr class='","'>");$body = Self::getSubstr($html,"<tr class='{$dec}'><td>","</table>");$body = substr($body, 0, -12);$rows = explode("</td></tr><tr class='{$dec}'><td>",$body);foreach($rows as $row){if($row{0} == '<'){$suburl = substr($url, 0, strrpos($url,"/")+1).Self::getSubstr($row, "<a href='","'>");$cols = explode('</td><td>',$row);try {$data = new Area(['code'=>Self::getSubstr($cols[0],'>','<'),'name'=>Self::getSubstr($cols[1],'>','<')]);$data->save();echo("{$data->code}, {$data->name}\n");}catch(PDOException $e){Log::info("ERROR: {$cols[0]}, {$cols[1]}");}Self::getCode($suburl);}else{$cols = explode('</td><td>',$row);try{if(count($cols)>2) {$data = new Area(['code'=>$cols[0],'name'=>$cols[2],'tcode'=>$cols[1],]);}else{$data = new Area(['code'=>$cols[0],'name'=>$cols[1],]);}echo("{$data->code}, {$data->name}\n");$data->save();}catch(PDOException $e){Log::info("ERROR: {$data->code}, {$data->name}\n");}}}}
}

抓取全国行政区划(PHP)代码相关推荐

  1. python+ BeautifulSoup抓取“全国行政区划信息查询平台”的省市区信息

    全国行政区划信息查询平台地址:http://xzqh.mca.gov.cn/map 检查网页源码: 检查网页源码可以发现: 所有省级信息全部在javaScript下的json中,会在页面加载时加载js ...

  2. xpath爬虫-抓取全国行政区划和城乡区划数据

    数据来源地址:2020年度全国行政区划和城乡划 代码示例:以安徽省合肥市为例 import requests from lxml import etree import pandas as pddef ...

  3. Python爬虫小记(2) :抓取全国各省市疫情实时数据 绘制2019-nCoV疫情地图

     2021/07/15更新:         没有及时看到评论区反馈的问题,属实抱歉,拉下代码看了一下应该是Pyecharts中Map的data_pair数据类型发生了变化,现将dic_items转化 ...

  4. python 定时自动爬取_python实现scrapy爬虫每天定时抓取数据的示例代码

    1. 前言. 1.1. 需求背景. 每天抓取的是同一份商品的数据,用来做趋势分析. 要求每天都需要抓一份,也仅限抓取一份数据. 但是整个爬取数据的过程在时间上并不确定,受本地网络,代理速度,抓取数据量 ...

  5. python定时爬取数据_python实现scrapy爬虫每天定时抓取数据的示例代码

    1. 前言. 1.1. 需求背景. 每天抓取的是同一份商品的数据,用来做趋势分析. 要求每天都需要抓一份,也仅限抓取一份数据. 但是整个爬取数据的过程在时间上并不确定,受本地网络,代理速度,抓取数据量 ...

  6. python自动抓取网管软件的数据_python实现scrapy爬虫每天定时抓取数据的示例代码...

    1. 前言. 1.1. 需求背景. 每天抓取的是同一份商品的数据,用来做趋势分析. 要求每天都需要抓一份,也仅限抓取一份数据. 但是整个爬取数据的过程在时间上并不确定,受本地网络,代理速度,抓取数据量 ...

  7. 淘宝抓取宝贝买家秀核心代码

    #淘宝抓取宝贝买家秀核心代码 def getPhoto(self,*comentlist):try:for comments in comentlist:#print(len(comentlist)) ...

  8. Python多进程抓取全国邮政编码和长途区号

    由于Python设计的限制(就是咱们常用的CPython)最多只能用满1个CPU核心.Python提供了非常好用的多进程包multiprocessing,你只需要定义一个函数,Python会替你完成其 ...

  9. Python抓取全国旅游景点以及小吃数据,想做旅游攻略?Python助你事半功倍。

    前言 疫情自从来了之后已经很久没有出去旅游过了,蹭着这段疫情好转,那肯定是要出去走一走的,这一篇其实是全国旅游中的一站,因为每个城市能玩的地方太多了,一篇文章下来肯定是写不了的,所以今天就抓取一下-- ...

最新文章

  1. vim的简单介绍与使用
  2. Mybatis加入Ehcache支持
  3. centos 查找nginx_centos7肿么查看已经安装nginx
  4. CentOS+lighttpd+php+mysql (fastcgi)环境的搭建(转)
  5. asp.net razor html,从控制台应用程序中的ASP.NET Razor模板生成HTML的当前最佳解决方案是什么?...
  6. 学C语言办公本和游戏本,为什么不建议买游戏本?入手前须知,别只看中游戏...
  7. Android 功耗( 21 )---MTK 低功耗1
  8. [Javascript]史上最短的IE浏览器判断代码
  9. Linux线程编程之生产者消费者问题【转】
  10. 信息安全工程师教程学习笔记汇总(思维导图及考试要点)
  11. 解决tar.bz2解压报错
  12. ANSYS FLUENT软件基础介绍
  13. 计算机桌面设置,电脑入门(十一)桌面个性化设置
  14. 详解从p12证书提取RSA公私钥和序列号(小白向)
  15. 网易云信 IM 推送保障及网络优化实践
  16. html的音频在线地址,HTML 音频(Audio)
  17. CTFshow--常用姿势
  18. Python实现Excel拆分操作
  19. iOS启动速度优化实践分享
  20. 内核空间:kmalloc vmalloc 用户空间:malloc ptmalloc

热门文章

  1. Unity3D中开发2D游戏——游戏玩家的出生、无敌、死亡方法
  2. Spring连接Mysql报Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link fai错
  3. MKVToolNix 修改电影默认音轨
  4. 安装Android studio时遇到的问题
  5. Android OTA升级包制作和验证
  6. 苹果也是纸老虎,其nano-sim标准真是另人精艳
  7. CC36 不同的子序列
  8. 思科踏足中国房地产CCRE首次落地大陆社区
  9. Node.js:Buffer基础
  10. Dragon Mainland(龙大陆)深度攻略