123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <?php
- /**
- * 爬取百度城市列表
- * @author >
- */
- class GetBaiduMapResCommand extends CConsoleCommand{
- public function run($args) {
- error_reporting(E_ERROR);
- set_time_limit(0);
- $city_list = $this->getcity(1);
- $city_json = json_encode($city_list);
- file_put_contents(dirname(__FILE__)."/../data/city.json",$city_json);
- $z_citylib = new ZCityLib();
- $str = file_get_contents(dirname(__FILE__)."/../data/city.json");
- $citylist = json_decode($str,true);
- foreach (array($citylist) as $key => $value) {
- if($value['sub_city']){
- foreach ($value['sub_city'] as $sub_key => $sub_value) {
- if($sub_value['sub_city']){
- foreach ($sub_value['sub_city'] as $grand_key => $grand_value) {
- if(isset($grand_value['sub_city'])){
- foreach ($grand_value['sub_city'] as $area) {
- echo 'insert'.$area['city_code'].'-'.$z_citylib->addCity($area['city_code'],$area['city_name'],$sub_value['city_code'],$grand_value['city_code'],0);
- echo "\n";
- }
- }
- echo 'insert'.$area['city_code'].'-'.$z_citylib->addCity($grand_value['city_code'],$grand_value['city_name'],$sub_value['city_code'],0,0);
- echo "\n";
- }
- echo 'insert'.$area['city_code'].'-'.$z_citylib->addCity($sub_value['city_code'],$sub_value['city_name'],0,0,0);
- echo "\n";
- }
- }
- }
- }
- //特别处理几个直辖市
- $z_citylib->addCity(10001,'上海市',0,0,0);
- $z_citylib->addCity(289,'上海市',10001,0,0);
- $criteria = new EMongoCriteria();
- $criteria->parent_province_id('==',289);
- $criteria->parent_city_id('==',0);
- $cursor = CityLib::model()->findAll($criteria);
- foreach ($cursor as $specail) {
- $specail->parent_province_id = 10001;
- $specail->parent_city_id = 289;
- $specail->update(array('parent_province_id','parent_city_id'),true);
- }
- $z_citylib->addCity(10002,'重庆市',0,0,0);
- $z_citylib->addCity(132,'重庆市',10002,0,0);
- $criteria = new EMongoCriteria();
- $criteria->parent_province_id('==',132);
- $criteria->parent_city_id('==',0);
- $cursor = CityLib::model()->findAll($criteria);
- foreach ($cursor as $specail) {
- $specail->parent_province_id = 10002;
- $specail->parent_city_id = 132;
- $specail->update(array('parent_province_id','parent_city_id'),true);
- }
- $z_citylib->addCity(10003,'北京市',0,0,0);
- $z_citylib->addCity(131,'北京市',10003,0,0);
- $criteria = new EMongoCriteria();
- $criteria->parent_province_id('==',131);
- $criteria->parent_city_id('==',0);
- $cursor = CityLib::model()->findAll($criteria);
- foreach ($cursor as $specail) {
- $specail->parent_province_id = 10003;
- $specail->parent_city_id = 131;
- $specail->update(array('parent_province_id','parent_city_id'),true);
- }
- $z_citylib->addCity(10004,'天津市',0,0,0);
- $z_citylib->addCity(332,'天津市',10004,0,0);
- $criteria = new EMongoCriteria();
- $criteria->parent_province_id('==',332);
- $criteria->parent_city_id('==',0);
- $cursor = CityLib::model()->findAll($criteria);
- foreach ($cursor as $specail) {
- $specail->parent_province_id = 10004;
- $specail->parent_city_id = 332;
- $specail->update(array('parent_province_id','parent_city_id'),true);
- }
- $z_citylib->addCity(10005,'香港特别行政区',0,0,0);
- $z_citylib->addCity(2912,'香港特别行政区',10005,0,0);
- $criteria = new EMongoCriteria();
- $criteria->parent_province_id('==',2912);
- $criteria->parent_city_id('==',0);
- $cursor = CityLib::model()->findAll($criteria);
- foreach ($cursor as $specail) {
- $specail->parent_province_id = 10005;
- $specail->parent_city_id = 2912;
- $specail->update(array('parent_province_id','parent_city_id'),true);
- }
- $z_citylib->addCity(10006,'澳门特别行政区',0,0,0);
- $z_citylib->addCity(2911,'澳门特别行政区',10006,0,0);
- $criteria = new EMongoCriteria();
- $criteria->parent_province_id('==',2911);
- $criteria->parent_city_id('==',0);
- $cursor = CityLib::model()->findAll($criteria);
- foreach ($cursor as $specail) {
- $specail->parent_province_id = 10006;
- $specail->parent_city_id = 2911;
- $specail->update(array('parent_province_id','parent_city_id'),true);
- }
- }
- public function getcity($areacode){
- $res = CommonFn::simple_http("http://api.map.baidu.com/shangquan/forward/?qt=sub_area_list&ext=1&level=1&areacode=$areacode&business_flag=0");
- $temp = json_decode($res);
- $city_list = array();
- $sub_city = array();
- if(isset($temp->content->sub)){
- foreach ($temp->content->sub as $value) {
- $sub_city[] = array('city_name'=>$value->area_name,'areacode'=> $value->area_code);
- }
- foreach ($sub_city as $key => $value) {
- if($value['areacode']){
- $sub_city[$key] = $this->getcity($value['areacode']);
- }
- }
- }
- $city_list['city_name'] = $temp->content->area_name;
- $city_list['city_code'] = $temp->content->area_code;
- $str = $temp->content->area_name."\n";
- echo $str;
- if($sub_city){
- $city_list['sub_city'] = $sub_city;
- }
- return $city_list;
- }
- }
|