专栏首页佛系编程人一键查询物流信息

一键查询物流信息

背景

前一段时间跳舞

发现鞋子磨了个洞(又得买鞋了)

然后就去淘宝买了双鞋

不过发现每次查物流都得登一次淘宝

然后又要点击这个点击那个的

作为懒虫的我觉得好麻烦啊~

于是乎就想写一个简单的查快递物流的程序,偷偷懒。过程中踩了一点坑

流程

  • 确定目标
  • 分析目标
  • 写代码
  • 检验结果

确定目标

百度上搜到一个'快递100'的网站,可以查询货物的物流信息,所以选择了它作为这次的小白鼠

但是运单号这么长,一位一位输进去也挺烦人的,还可能输错

所以这次想达到的效果是复制一个要查询的运单号,然后再运行程序直接显示最新的物流状态

给大佬递上该网址:' http://www.kuaidi100.com/'

分析目标

打开网址,进入到这个界面

爬虫常规操作:打开开发者工具,我喜欢直接按 f12

什么都没有,建议不要刷新,方便待会寻找目标

一般这种需要提交信息的,内容都不会在 element,而是在network , 并且一般在XHR中

然后在输入框内输入一个运单号

建议粘贴上去,也是为了方便寻找目标

我用框框下面提供的运单号进行测试的

然后你会看到开发者工具的左边会出现一个不知道是啥的东西

不管,先盘它。。

点击之后再点击Preview , 看看里面是啥

好像没有我们想要的东西,算了,先不管它。。

继续往下走,看看会不会出现什么线索

点击下拉框中的第一个选项

然后它跳转到了这个界面,并且发现开发者工具左边又出现了一个不知是啥的东西

点开看看它的Preview里会不会有什么我们需要的线索

哦吼~我看到了啥!!

太棒了,看来找到目标了,而且还是json格式,提取就简单多了

淡定淡定~先来分析分析它的请求网址

点击headers,查看 Request URL 和 Request Method

Request URL :

' https://www.kuaidi100.com/query?type=jd&postid=VC55230341272&temp=0.8083403728887184&phone='

Request Method : get

分析一下这个网址,它是由 ' https://www.kuaidi100.com/query ' 以及 ' ? '后面的参数组成的

那我们再来分析一下这些参数从哪获得

首先是 type ,它的值是 jd,是京东的字母缩写,说明这个快递来自京东,好像在前面见过,返回去找找看

原来就在之前第一次跳出的未知是啥的里面,那我们只要提取出这个 ' jd ' 作为 type的值就可以了

看看这个的请求网址是啥

点击headers查看一下

请求网址是:' http://www.kuaidi100.com/autonumber/autoComNum?resultv2=1&text=VC55230341272 '

并且以post方式向服务器进行请求

这里面又有两个参数resultv2和text

参数text 的值好理解,就是运单号嘛

参数resultv2是啥,目前未知,也先不管,照写上去,待会看看会不会有影响

参数type 的值暂时解决了,继续看看下一个

下一个是参数temp, 目前未知,不过看上去像时间戳,先不管它,待会再看看会不会有什么影响

下一个是参数phone , 这个就简单了,因为它的值啥也没有,照写上去就好了

最后就是知道它的请求方式是 get 请求。

最后总结一下,刚才出现的几个未知的参数,你多找几个运单号测试对比一下就可以发现resultv2的值不会变,所以直接照抄上去就好了。temp是随机的,应该是时间戳,我试着不变,只改变运单号,结果是一样的,所以这个没什么影响,也是照搬就行。网址参数解决后就用json提取数据就可以完成我们的目标了

编写代码

import requests
import pyperclip #用于复制、粘贴

print('运行本程序需先复制快递订单号')

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36',
'Referer': 'https://www.kuaidi100.com/',
'Host': 'www.kuaidi100.com',
'Cookie': 'WWWID=WWW3A2D82C41E5A3F9618CCA4FF90F7C225; Hm_lvt_22ea01af58ba2be0fec7c11b25e88e6c=1556960166,1556960535,1556969377; csrftoken=mGs4KEcLyMdFFxQFw61Om9MQjgLYmF9-Z8LDb0bLEOI; Hm_lpvt_22ea01af58ba2be0fec7c11b25e88e6c=1556969389'
} # 这就是我踩的坑,这些参数不加还不行,不加它玩你!
#注意上面的cookie可能会过期

#输入快递单号并获取相应物流公司
url_id = 'https://www.kuaidi100.com/autonumber/autoComNum'
params_id = {
'resultv2': '1',
'text': pyperclip.paste() } # pyperclip.paste()输出复制的内容
req_id= requests.post(url_id,params=params_id,headers = headers)
result_id = req_id.json() # 将文本转换为json格式
comde = result_id['auto'][0]['comCode']
print(f'物流公司字母:{comde}')


#获取物流信息
url_mes = f'https://www.kuaidi100.com/query?type={comde}&postid={ params_id["text"]}&temp=0.457913985512678&phone='
req = requests.get(url_mes,headers = headers)
js = req.json()
time = js['data'][0]['time']
context = js['data'][0]['context']
print(f'时间:{time}\n物流状态:{context}')

检验结果

本文分享自微信公众号 - 佛系编程人(py520llj),作者:佛系小卢

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 小白都能学会的css

    css 相当于美化工具,就是在事物原有的基础上对外表进行修饰和包装,跟ps、美图秀秀等类似,只不过,css 是美化的对象是html 文本,是一个超文本标记语言。

    佛系编程人
  • 爬虫 | 周末不知道看啥电影?不存在的

    最近不知道为什么很想看电影,但又不知道什么电影好看,就想去豆瓣找找,之前学了一点简单的爬虫,刚好可以用来练练手。内容比较长,可以边听音乐边看,嘻嘻~

    佛系编程人
  • 讲讲Python爬虫绕过登录的小技巧

    很多时候我们做 Python 爬虫时或者自动化测试时需要用到 selenium 库,我们经常会卡在登录的时候,登录验证码是最头疼的事情,特别是如今的文字验证码和...

    佛系编程人
  • 推荐9个软件神器,26个网站,让你PPT更加风骚

    导语:本文推荐了9个软件神器,26个网站,包含了PPT制作中的图片,素材,格式处理等方面。标题链接直达官网或者下载地址

    IT派
  • SQL存储过程有什么用?

    假如你每天要开车完成一些列重复的操作:第一步拿出车钥匙,第二步开车,第三步侧位停车。现在出现了一款超牛逼的车,可以一键自动的完成这些重复的工作。每次你随便找个第...

    陈学谦
  • Android自定义view实现图片选色器

    – 选取圆盘选色图片上的颜色,实时监听 – 可设置选色指示图片,跟随触摸位置、指示所选颜色,示例中为白色圆环 – 可自己设置选色图片(目前只支持圆形图片...

    砸漏
  • Android-教你写小米系统应用--"我的小米"

    前面的文章中,我们已经了解了如何去自定义一个ViewGroup,可以在onLayout中自由的对子View进行位置设定,我们今天这里刚好需要对上面需求提到的三部...

    三好码农
  • 图解面试题:SQL存储过程有什么用?

    1.存储过程是什么? 假如你每天要开车完成一些列重复的操作:车钥匙启动车,倒车。现在出现了一款新车,可以自动的完成这些重复的工作。每次你上车以后,车就自动帮助你...

    猴子数据分析
  • Windows Server 2008与2012建立林信任关系

    当公司发展规模较大后,会有多个分公司或者合并收购其他公司的情况出现,这时候就会涉及到多个域以及员工工作调离的情况,这里就会牵涉到用户和计算机跨域的迁移。要跨域迁...

    李珣
  • Android studio圆形进度条 百分数跟随变化

    本文实例为大家分享了Android studio圆形进度条展示的具体代码,供大家参考,具体内容如下

    砸漏

扫码关注云+社区

领取腾讯云代金券