本文目标:利用python实现简单的快递查询
开发工具:
python版本:3.7.1
使用的库:request 和 json
安装Python并添加到环境变量,pip安装需要的相关模块即可。
实现原理:
爬取快递信息很简单,只需要根据快递单号获得其可能所属的快递公司,然后分别获取这些快递公司该快递单号的数据即可。
快递信息数据源:
https://www.kuaidi100.com/
代码实现:
01 分析快递100
在搜索框输入快递单号时,下方会自动显示可选的快递或者物流公司,
通过Network可以看到是向一个网址发送了POST请求,参数有一个固定的参数(resultv2 )和快递单号(text ),返回的结果就包含快递公司的名称。
然后点击对应的快递公司,会显示查询结果。
这个过程是以快递公司类型(type)、快递单号(postid)和一个随机的数(temp)为参数发送的GET请求,返回的结果中就包含了快递的时间和位置信息。
02 代码实现
首先导入相应的模块:
import json
import requests
·JSON是一种轻量级的数据交换格式,里面可以包括方括号括起来的数组,也就是Python里面的列表。
·request模块的功能就是模拟浏览器对某一特定URL进行访问。
查询:
number = input('请输入您的快递单号')
url ='http://www.kuaidi100.com/query?type=ems&postid=%s'%number
# 使用requests发起请求,接受返回的结果de'du
rs = requests.get(url)
# 使用loads函数,将json字符串转换为pyhton的字典或列表
rs_dict = json.loads(rs.text)
# 判断是否成功获取到了json的数据,如果有数据则进行下一步的解析
msg = rs_dict['msg']
if msg =='ok':
print('您的快递%s物流信息如下:'% number)
data_list = rs_dict['data']
for kuaidi_dictin data_list:
time = kuaidi_dict['time']
context = kuaidi_dict['context']
print('%s'%time)
print('%s'%context)
else:
print(msg)
输出:
成功实现了快递信息的查询!
其实大家日常使用的快递查询方式就足够方便,本文更多是希望通过python快递查询这个小实例让大家更多的理解和使用request、json两个模块。
- DataCastle -
领取专属 10元无门槛券
私享最新 技术干货