手动撸一个快递接口

开发环境:win-xp  python2.7.9  firefox

使用的库 标准库

 

最近有做查物流相关项目,需要用到物流接口,先百度下,看有没有现成的

还一天限制500次,还要填那么多信息,玩个蛋

自己撸一个得了

先看下在线查询的网站,百度第一个出来的是快递100,上面广告不算

就撸你了,谁让你排第一个

 

1,打开网站,按f12,查看元素,调掉网络,开始监控数量

2输入一个单号

可以看下发送了不少请求,选xhr过滤下,下面2条就是我们需要跟踪的请求数据

一条条来分析

第二条是一个post请求,看下请求参数,参数就一个text,值就是单号

请求链接是 http://www.kuaidi100.com/autonumber/autoComNum?text=XXXXXXX

返回参数如下,就一个comCode,看来这个请求是判断单号是什么快递的

 

ok,看另外一条请求

链接是

http://www.kuaidi100.com/query?type=shentong&postid=xxxx&id=1&valicode=&temp=0.462558009486876

响应如下,这个就是物流信息,是一个json数据

回头再看下链接,几个字段type,postid,id,temp

type明显是快递名称,postid就是单号,id貌似固定是1,temp看情况是时间戳,valicode是空的

去掉temp直接再浏览器打开链接,看到可以获取数据,没啥用的数据

到这里,可以看出网站提供了2个接口,第一个是用来判断物流公司

第二个接口才是真正查询接口

还要什么申请啊,这不有现成的么

 

基本分析完成了,接下来就是python开撸

 

先写第一个接口

#!/usr/bin/env python
#coding:utf-8
import urllib,urllib2
import json,sys
reload(sys)
sys.setdefaultencoding("utf-8")


#获取快递名称
def get_kd_name(danhao):
    url = "http://www.kuaidi100.com/autonumber/autoComNum?text="
    if type(danhao)!=long:
        return False
    try:
        return json.loads(urllib2.urlopen(url+str(danhao)).read())["auto"][0]['comCode']
    except Exception, e:
        return False

先判断下单号是不是long类型数值

然后拼接url,访问数据,讲真,其实还要伪装下浏览器啥的,懒的弄了

这样就可以通过单号判断物流公司了

下面第二个接口

#获取物流信息
def get_wuliu(danhao):
    url = "http://www.kuaidi100.com/query?id=1&valicode="
    code = get_kd_name(danhao)
    if code:
        url = url+"&type=%s&postid=%s"%(code,danhao)
        try:
            return json.loads(urllib2.urlopen(url).read())["data"]
        except Exception, e:
            return False
    else:
        return False

这个接口用到了第一个的接口,只需要输入单号就可以得到物流信息

不过如果知道物流公司的话,type就不用获取了,可以省一次访问接口,速度更快

#获取物流信息
def get_wuliu(code,danhao):
    url = "http://www.kuaidi100.com/query?id=1&valicode="
    if code:
        url = url+"&type=%s&postid=%s"%(code,danhao)
        try:
            return json.loads(urllib2.urlopen(url).read())["data"]
        except Exception, e:
            return False
    else:
        return False

 就这样,一个快递接口就撸出来了,后面在集成到自己程序里面,想怎么查就怎么查

 

 今天的分享就到这里,如果大家觉得还可以呀,记得打赏呦

 

posted @ 2017-09-27 21:32  darkspr  阅读(773)  评论(0编辑  收藏  举报