背景

前一段时间跳舞,发现鞋子磨了个洞(又得买鞋了),然后就去淘宝买了双鞋,不过发现每次查物流都得登一次淘宝,然后又要点击这个点击那个的,作为懒虫的我觉得好麻烦啊~,于是乎就想写一个简单的查快递物流的程序,偷偷懒。过程中踩了一点坑。。。

流程

  • 确定目标

  • 分析目标

  • 代码实操

  • 检验结果

确定目标

百度上搜到一个’快递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}')

检验结果


nice~目标达成

本人也运营了一个公众号–【佛系学python】,大部分文章会在里面发布。
希望大家多多支持,谢谢

一键查询快递物流信息相关推荐

  1. 高效查询快递物流信息

    现在市面上已经出现很多可以批量查询快递.分析物流延误.异常等物流状态的软件,今天小编就来分享一款叫--快递批量查询高手的查询工具,快速查询物流,提高效率. 首先我们运行软件,整个主页排版非常整洁 ,功 ...

  2. Java查询快递物流信息写法【免费】

    由于不知道什么时候接口会停止使用,还是推荐大家去购买快递接口... 快递110的开放接口 低调使用吧 免费的 亲测可用 代码: /*** 快递单号查询,使用快递110开放接口完成.** @param ...

  3. 快递查询教程,自动过滤重复单号,批量查询快递物流信息

    如何查询快递单号的物流?最好是可以一次性查询的那种,并在导入单号时,可以自动识别重复的单号.那么今天小编给大家分享一个新的技巧,下面一起来试试. 材料准备: 一台Win系统的电脑 多个快递单号 步骤演 ...

  4. 怎么批量查询快递物流信息

    做微商的朋友会不会遇到物流单号多查询麻烦的这种情况,这种情况其实借助辅助软件来查询是非常简单的,下面小编介绍一款软件批量查询物流信息,操作简单,有兴趣的一起来看看吧. 运行快递批量查询高手,在软件主界 ...

  5. 删除单号中的符号并查询快递物流信息

    当你有一批单号,但是带有符号,那么如何将这些单号全部删除,并快速查询出每个单号的物流信息呢?这里用批量查询的方法一起来试试. 大量的单号保存在文档中,可以看到每个单号都带有逗号 在电脑上下载安装一个[ ...

  6. 查询快递 如何操作查询快递物流信息给单号进行标记

    随着互联网时代的快速发展,大家在网上购物越来越方便,只要有购物就会有查询物流信息的需求,那今天小编分享一个方法批量查询并将给部分单号进行标色的简单方法.有需要的朋友一起来看看吧! 第一步,运行[快递批 ...

  7. 手把手教你通过单号查询快递物流信息

    当你拥有多个快递单号的时候,一般会怎么快速查询物流呢?今天小编给大家分享一个新的查询技巧,下面一起来试试. 所需工具 快递单号若干 操作步骤 打开[快递批量查询高手],在"添加单号" ...

  8. 查询快递物流信息在哪里查

    在快递单号非常多的情况下,我们应该选择一款简单好用的辅助工具来帮助完成查询物流的强大任务.于是乎今天小编给大家带来一款新的技巧,它支持多家快递,一次能查询多个单号物流,还能对查询到的物流进行分析.导出 ...

  9. 第三方电商平台账号授权查询快递物流信息API代码-快递100API

    一.第三方电商平台账号授权 通过第三方授权获取月结账号授权码 1.1 接口格式 提供统一格式的HTTP POST或GET调用接口,并返回统一格式JSON数据. 1.2 请求地址 https://pol ...

最新文章

  1. TD321DCAN 隔离CAN总线驱动器
  2. 尝鲜delphi开发android/ios_环境搭建
  3. python输出word内容_Django输出word文件(.doc),只在内容中显示原始html
  4. 数据库-优化-pt-query-digest使用简介
  5. linux salt生成,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  6. python 怎么将数组转为列表_怎么将视频转为GIF动态图 表情包怎么制作
  7. 计算机管理在哪个里面,在计算机中哪个子系统是其他子系统的管理者
  8. iOS开发——获取本设备IP
  9. CCF201703-2 学生排队(100分)
  10. 用U3D寻找看电视的感觉!!
  11. Installing VMware Tools, please wait解决办法
  12. 学习随笔——2.仿苹果官网效果,滚动缩放图片
  13. 设计模式 - 漫谈软件编程背后的系统化思维
  14. stay hungary stay foolish
  15. 生活随记 - 2020年 人生没了来处只剩下了归途
  16. 现代企业管理-管理概论
  17. 判断两个单链表是否相交--java实现
  18. Unity教程之-制作闪亮的星星Star(二):创建Shader
  19. 实例004:计算正方形的周长
  20. web调用IC卡读卡器开发第一章(转载)

热门文章

  1. cobol - 数据的排序与合并
  2. ArcSoft人脸识别SDK开发
  3. 在重绘过程中,CTreeCtrl::SelectItem没有响应
  4. 您选择的用户登录名已在该企业中使用,请选在另一个登录名,然后再试
  5. AutoCAD2016第一个ObjectArx2016程序HelloWorld
  6. python大一题库西农_回家这样聊!西农娃专属话题库
  7. python快速实现图像矫正_OpenCV-python 实现图片矫正
  8. lvgl 视频叠加图标显示
  9. 龙芯处理器内核中断讲解
  10. Leetcode快速入门之第三节课: 分治算法