<python13>查询快递状态

一、比如打开快递网:http://www.kuaidi.com/,搜索某个单号,判断它的状态是不是已签收.
涉及到的知识点:
1.通过Fiddler抓包,获取对应的header信息,因为是get请求,不涉及到登录,所有headers中不需要写cookies。从抓包出来的信息看,请求类型:get, http://www.kuaidi.com
2.Fiddler抓包技巧,可以通过host过滤,要学会查看request和response
3.代码部分:Json数据处理(encode python-->json decode json-->python)
decode 解码 encode编码
python里面bool值是True和False,json里面bool值是true 和 false,并且区分大小写,这就尴尬了,明明都是 bool 值。
在python里面写的代码,传到json里,肯定识别不了,所以需要把python的代码经过encode 后成为 json 可识别的数据类型。

import requests
url="http://www.kuaidi.com/index-ajaxselectcourierinfo-763038720637-zhongtong.html"
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}
s=requests.session()
r=s.get(url,headers=headers)
print(r.text)
print(type(r.text))  #得到的是<class 'str'>字符串类型
result=r.json()
print(result)
print(type(result)) #得到的是<class 'dict'>字典类型
data=result["data"]
print(data)
print(type(data))  #得到的是<class 'list'>列表类型
print(data[0])   
print(type(data[0]))   #得到的是<class 'dict'>字典类型
print(r.cookies)
print(r.status_code)
get_result=data[0]['context']
print(get_result)

if u"拍照签收" in get_result:
    print ("快递单已签收成功")
else:
    print ("未签收" )
Fiddler抓包

代码执行结果
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 9,709评论 4 16
  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,864评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,107评论 19 139
  • 因为你们总是迁就对方,生气的时候不说出来,憋在心里,以为这就是爱,然后就会等到失望攒够了,突然爆发,然后对方也会有...
    骑奥巴马的唐僧阅读 2,920评论 0 0
  • 我签字送你去天堂 作者:夏文谷 01 安乐死有“好的死亡”或“无痛苦的死亡”的含意,是一种给予患有不治之症的人以无...
    夏文谷阅读 3,627评论 3 2

友情链接更多精彩内容