包含中国省、市、县、街道、村/居委会5级数据(港、澳、台除外(统计局官网没有给出)),数据来源为国家统计局。 程序基于tp3.2.3编写,依赖Querylist3。 主要代码: /** * @author Adam * Time: 2018/6/15 14:50 */ public function sheng() { $data = QueryList::Query($this->baseurl . "index.html", array("url" => array("td>a ", "href"), "name" => array("td>a", "text")), "", 'UTF-8', 'GB2312')->getData(); foreach ($data as $k => $v) { $data[$k]["url"] = str_replace(".html", "", $v["url"]); $data[$k]["saveid"] = $this->generate_full_id($data[$k]["url"]); $res = $this->areamodel->where(array("area_id" => $data[$k]["url"]))->find(); if (empty($res)) { $this->areamodel->data(array("area_id" => $data[$k]["url"], "area_pid" => 0, "area_name" => $data[$k]["name"], "level" => 1))->add(); } } echo json_encode($data); die; } /** * 二级 市 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/14.html * @author Adam * Time: 2018/6/20 13:43 */ public function secondway() { $toplevel = $this->areamodel->where(array("imported" => 0, "level" => 1))->order("area_id DESC")->find(); if (empty($toplevel)) { echo "全部导入完毕,无需重新导入"; die; } $fatherid = $toplevel["area_id"]; $url = $this->baseurl . $toplevel["area_id"] . ".html"; $data = QueryList::Query($url, array("url" => array("td:eq(0)>a", "href"), "name" => array("td:eq(1)>a", "text")), "tr.citytr", 'UTF-8', 'GB2312')->getData(); foreach ($data as $k => $v) { $data[$k]["url"] = str_replace(".html", "", $this->reg_real_id($v["url"])[0]); } M()->startTrans(); foreach ($data as $k1 => $v1) { $res["area_id"] = $v1["url"]; $res["area_pid"] = $toplevel["area_id"]; $res["level"] = 2; $res["area_name"] = $v1["name"]; if (!$this->areamodel->data($res)->add()) { echo "循环导入失败" . M()->getLastSql(); die; M()->rollback(); } } $this->areamodel->where(array("area_id" => $fatherid))->save(array("imported" => 1)); $sql = M()->getLastSql(); M()->commit(); echo "导入成功 " . $sql; … Read more