手把手教你用Python爬取快递100查询你的物流信息
时间:2022-07-24
本文章向大家介绍手把手教你用Python爬取快递100查询你的物流信息,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
我们经常会去查快递的物流单号,可是这些物流单号是从哪里来的呢?
快递鸟集合了多家快递公司查询接口,输入相应快递公司编码和快递单号就可以获取到对应的物流信息很方便快捷。
项目目标
教会大家如何用Python编程去查询自己的物流信息。
项目准备
软件:PyCharm
需要的库:urllib.request
、json
网站:https://www.kuaidi100.com
项目分析
如何获取真正的网址,拿到相对应的接口? chrome浏览器F12检查,随便输入一个快递单号,点击查找。如图:
找到
query?type=shentong&postid=773036432685909&temp=0.0
这个文件。找到Request URL:复制网址。分析网址:
https://www.kuaidi100.com/query?type=shentong&postid=773036432685909&temp=0.03191355265516216&phone=
可以看到postid就是我们的快递单号,type就是各个快递公司的名字拼音的简称。那等下就可以定义这个字典去存放各个公司名字的简称拼接网址。
找到Preview=>>
对应的data可以看到context就是物流信息。等下可以通过js解析获取对应的字段。
项目实现
定义一个class类继承object。导入需要的库和网址。定义一个字典kd_dict
存放快递公司简称。
import urllib.request
import json
kd_dict = {1: 'shentong', 2: 'youzhengguonei', 3: 'yuantong', 4: 'shunfeng', 5: 'yunda', 6: 'zhongtong'}
class YU(object):
pass
建立查询框架。
while True:
print("输入要查询快递公司:")
print("1.申通 2.EMS邮政 3.圆通 4.顺风 5.韵达 6.中通 0.退出n ")
choose = int(input("请选择您的快递公司:"))
while choose not in range(0, 7):
choose = int(input("抱歉暂不支持此公司请重新选择:"))
if choose == 0:
break
kd_num = input("请输入快递单号:")
对js文件进行解析
url = "http://www.kuaidi100.com/query?type=%s&postid=%s" % (kd_dict[choose], kd_num)
response = urllib.request.urlopen(url)
html = response.read().decode('utf-8')
target = json.loads(html)
判断status的是不是200,是200才可以正常访问 ,获取对应的data
if status == '200':
data = target['data']
# print(data)
data_len = len(data)
# print(data_len)
# print("n")
for循环遍历,获取对应的字段。
for i in range(data_len):
print("n时间: " + data[i]['time'])
print("状态: " + data[i]['context'] + "")
print("n感谢使用!n")
break
else:
print("输入有误请重新输入!n")
程序循环。
while True:
YU.Check()
out = input("按任意数字退出(其他键继续).........")
if out >= '0' and out <= '7':
break
else:
print("n")
continue
效果展示
点击绿色小三角运行,之后输入快递公司代表的编号
输入你的快递单号,之后在控制台上可以看到显示结果,如下图所示。
小结
- 不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。
- 本文章就python爬取快递100,介绍了如何去拼接字符串,以及列表如何进行类型的转换。
- 通过文中Python程序,可以清晰的看到你的快递的物流信息。
- 欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。
- Codeforces 725B Food on the Plane
- Codefoces 723B Text Document Analysis
- Codefoces 723A The New Year: Meeting Friends
- ECJTUACM16 Winter vacation training #1 题解&源码
- 信息学奥赛一本通算法(C++版)基础算法:高精度计算
- 看破欧拉函数的奥秘
- 线段树入门总结
- 从零基础学三分查找
- Codeforces Beta Round #1 A,B,C
- 线性分类器-中篇
- isupper()函数
- HDU 5882 Balanced Game
- 超级玛丽游戏
- POJ 3673 Cow Multiplication
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 武磊告别西甲!Python带你解读「全村的希望」武磊职业数据
- 谁在崛起,谁在没落?新一线城市竞争力盘点,用Python绘制动态图带你看懂!
- 两数相加
- 这样设置 IDEA,让你爽到飞起!
- Tensorflow基础入门十大操作总结
- Spring Boot 2.x基础教程:使用EhCache缓存集群
- 白平衡初探
- Activity的启动过程详解(基于10.0源码)
- Activity生命周期-你真的了解吗?
- Activity启动模式
- Redis6.0主从、哨兵、集群搭建和原理
- Linux入门学习笔记二
- 聊聊dubbo-go的tracingFilter
- 轻松学Pytorch –使用torchvision实现对象检测
- Linux core dump有什么用?