请登录购买宝贝并到结帐页面
http://unit.buy.tmall.com/order/confirmOrder.htm
当到这个页面后,你会发现这个页面是个iframe(框架),单击右键可以轻松知道配送地址功能的界面URL
http://member1.taobao.com/member/fresh/deliver_address_frame.htm?sign=_a2_wr_qwv6w_f_rd_zu8cp_i_w_zj9_x_jms_k_g_z_y7_z_d_l0v_p_ec_v_ai_i%252F0_dd0_j_g_u4v_a%253D%253D&from=tmall&reurl=%2F%2Fbuy.tmall.com%2Forder%2FaddressProxy.htm&version=1.0.10&sign_type=TEP&tid=74126668
OK,看到这个界面,大家就可以单击右键,把淘宝的源码保存下来了
节省了自己写HTML代码的时间:
通过火狐FireBug,可以查看到类似JS文件:
http://g.tbcdn.cn/tbc/??address/1.2.1/xaddress/index-min.js?t=1432885222614.js
复制上述内容
用JS格式化工具格式化JS文件内容,辅助Unicode编码转换
(如北京的Unicode编码是\u5317\u4eac),更清楚的看到很多惊喜的接口API,根据URL参数地址,相信聪明的你肯定知道其各自作用:
OK,主要JS文件就在这边
自己可以顺着这个路线具体研究淘宝地址实现逻辑了,也可以间接使用JS(省得自己写JS了)
地址多级联动API
打开火狐firebug或者IE浏览器按F12快捷键,当你在选择:中国大陆->北京->东城 时候,会发现URL
http://lsp.wuliu.taobao.com/locationservice/addr/output_address_town_array.do?l1=110000&l2=110100&l3=110101&lang=zh-S&_ksTS=1432880083437_7507&callback=jsonp7508
上述API只要接收几个必要参数即可,请按照上述图片中获取所有省、市、县的各自CODE值,然后循环赋值参数给这个接口拼接为新的URL
就像采集一样,就可以批量瞬间得到全国具体物流信息 乡、区、村这种具体的物流数据,愉快的保存到您的数据库吧!
你也可以把淘宝这个API当成您的“私人”API使用!而且速度更快,更稳定!节省你的可怜宽带、CPU、内存...
享受下站在巨人肩膀上的乐趣吧!
总结
- 地址大部分数据都是固定不变的(如省份、市、县),我们可以“写死”在JS文件中静态加载
- 静态js文件只需加载1次,以后用户浏览器自动使用本地使用缓存文件
- 也可以做个程序按需手动生成“address.js"的程序,比如某个省改名了
- 千万不要再去多此一举的去连接数据库,否则会增大数据库压力浪费宽带资源...
- 如果地址配送想做的更细,如:针对乡、区、村这种变更率稍大的字段,可以借鉴淘宝那种做成API的Ajax按需请求URL
- 针对上述的API数据获取,服务端有可能是从数据库中获取数据,也有可能是从静态文件中筛选出数据(参考上述第3条)
- 细心的同学通过查看淘宝源码可以发现有很多规范可以学习参考:HTML写法、验证电话号码&区号的正则、城市区号对照、HTML5的运用、压缩的处理...有些可以直接拿来用!
- 不需要到处盲目的找“规范”,淘宝就是规范!因为他们都是经过严格面试的!站在巨人的肩膀上,学习淘宝,取其精华取其糟粕,假以时日,你就是高手!