网上的三级联动数据大多只有省市县,且数据可能并不完整,由此可以借用京东的三级联动数据,除了可以获得省市县的数据外还可以获取主干街道的数据,和京东下单时所填写的配送地址一样比较全面,适合电商网站使用。
数据源
http://fts.jd.com/area/get?fid=' . $fid . '&callback=getAreaList_callbackF&sceneval=2
通过以上URL,替换中间的$fid
可以获取到不同省、直辖市的下主要区域。
下面是全国主要省、直辖市的id
$baseArea = [
'1' => '北京',
'2' => '上海',
'3' => '天津',
'4' => '重庆',
'5' => '河北',
'6' => '山西',
'7' => '河南',
'8' => '辽宁',
'9' => '吉林',
'10' => '黑龙江',
'11' => '内蒙古',
'12' => '江苏',
'13' => '山东',
'14' => '安徽',
'15' => '浙江',
'16' => '福建',
'17' => '湖北',
'18' => '湖南',
'19' => '广东',
'20' => '广西',
'21' => '江西',
'22' => '四川',
'23' => '海南',
'24' => '贵州',
'25' => '云南',
'26' => '西藏',
'27' => '陕西',
'28' => '甘肃',
'29' => '青海',
'30' => '宁夏',
'31' => '新疆',
'32' => '台湾',
'84' => '钓鱼岛',
'52993' => '港澳'
];
例如这样:
代码
<?php
/**
* @author 心语难诉
* @version 1.0
* @url https://xinyu19.com
* @filename JDArea.php
* @des 京东 省、市、县、街道数据获取
*/
class JDArea{
/**
* [$baseArea 全国省、直辖市ID]
*/
public static $baseArea = [
'1' => '北京',
'2' => '上海',
'3' => '天津',
'4' => '重庆',
'5' => '河北',
'6' => '山西',
'7' => '河南',
'8' => '辽宁',
'9' => '吉林',
'10' => '黑龙江',
'11' => '内蒙古',
'12' => '江苏',
'13' => '山东',
'14' => '安徽',
'15' => '浙江',
'16' => '福建',
'17' => '湖北',
'18' => '湖南',
'19' => '广东',
'20' => '广西',
'21' => '江西',
'22' => '四川',
'23' => '海南',
'24' => '贵州',
'25' => '云南',
'26' => '西藏',
'27' => '陕西',
'28' => '甘肃',
'29' => '青海',
'30' => '宁夏',
'31' => '新疆',
'32' => '台湾',
'84' => '钓鱼岛',
'52993' => '港澳'
];
/**
* [getAll 循环获取所有数据]
*/
public static function getAll(){
$areaArr = [];
foreach (self::$baseArea as $key => $value) {
$areaArr[$key]['id'] = $key;
$areaArr[$key]['name'] = $value;
$areaArr[$key]['area'] = self::requestApi($key);
foreach ($areaArr[$key]['area'] as $k => $v) {
echo "数据获取成功:{$areaArr[$key]['name']}----{$v['name']}\r\n";
$province = $areaArr[$key]['name'];
$city = $v['name'];
$areaArr[$key]['area'][$k]['county'] = self::requestApi($v['id']);
foreach ($areaArr[$key]['area'][$k]['county'] as $item) {
echo "数据获取成功:{$province}----{$city}----{$item['name']}\r\n";
}
}
}
return $areaArr;
}
/**
* [requestApi 数据请求函数]
* @return [type] [json]
*/
public static function requestApi($fid){
$API_URL = 'http://fts.jd.com/area/get?fid=' . $fid . '&callback=getAreaList_callbackF&sceneval=2';
$result = file_get_contents($API_URL);
$result = str_replace('getAreaList_callbackF(', '', $result);
$result = str_replace(')', '', $result);
$result = json_decode($result, true);
return $result;
}
}
$res = JDArea::getAll();
DEMO
说明
代码中只做了简单的数据生成,可根据自身需求生成json文件或者动态入库。PS:代码仅供研究学习
這篇 文 章非常 有用,你可 以 在這裡找 到各 種類 型的行業資訊。您將獲得一個行業聯絡人資料庫來定位您的業務。您可以根據您的業務 目標組 織資料。我們將認真建立我們的資料庫。無論您是資料專家還是新手,您都可以快速存取做出明智決策所需的資料。透過靈 活的 存取 選項,您 可以 隨 時隨 地存取資料。
王者荣耀无限点券http://av325.com/
很好啊
感谢分享
学习到啦 谢谢博主的文
还可以这样
网赚项目:www.nizhuanqian.com
买空包、淘宝快递单号购买、拼多多快递单号购买上忧忧单号网www.uudanhaowang.com
88单号网 一单一用 免费试用 免费单号 快递单号www.88danhaowang.com
快递代发, 快递代发,免费提供底单www.uudanhaowang.com
学习到啦 支持下博主
11111112222
这种接口怎么爬到的,开发者工具吗
不错,是完整的就更好了
我手里就有完整的京东地址库数据,之前跟京东做业务对接的时候搞的
可以啊兄嘚~可否分享?ヾ(≧∇≦*)ゝ
我记得好像是34个。