专栏首页Python爬虫与数据挖掘手把手教你用Python查询你的物流信息

手把手教你用Python查询你的物流信息

回复“书籍”即可获赠Python从入门到进阶共10本电子书

今日鸡汤

千淘万漉虽辛苦,吹尽狂沙始到金。

/1 前言/

我们经常会去查快递的物流单号,可是这些物流单号是从哪里来的呢?

快递鸟集合了多家快递公司查询接口,输入相应快递公司编码和快递单号就可以获取到对应的物流信息很方便快捷。

/2 项目目标/

教会大家如何用Python编程去查询自己的物流信息。

/3 项目准备/

软件:PyCharm

需要的库:urllib.request、json

网站如下:

https://www.kuaidi100.com

/4 项目分析/

一、如何获取真正的网址,拿到相对应的接口?

1、chrome浏览器F12检查,随便输入一个快递单号,点击查找。如图:

2、找到

query?type=shentong&postid=773036432685909&temp=0.0

这个文件。找到Request URL:复制网址。

3、分析网址:

https://www.kuaidi100.com/query?type=shentong&postid=773036432685909&temp=0.03191355265516216&phone=

4、可以看到postid就是我们的快递单号,type就是各个快递公司的名字拼音的简称。那等下就可以定义这个字典去存放各个公司名字的简称拼接网址。

5、找到Preview=>>对应的data可以看到context就是物流信息。等下可以通过js解析获取对应的字段。

/5 项目实现/

1、定义一个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

2、建立查询框架。

  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("请输入快递单号:")

3、对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)

4、判断status的是不是200,是200才可以正常访问 ,获取对应的data。

 if status == '200':
      data = target['data']
      # print(data)
      data_len = len(data)
      # print(data_len)
      # print("\n")

5、for循环遍历,获取对应的字段。

  for i in range(data_len):
        print("\n时间: " + data[i]['time'])
        print("状态: " + data[i]['context'] + "")
    print("\n感谢使用!\n")
    break
else:
    print("输入有误请重新输入!\n")

6、程序循环。

   while True:
      YU.Check()
      out = input("按任意数字退出(其他键继续).........")
      if out >= '0' and out <= '7':
          break
      else:
          print("\n")
          continue

/6 效果展示/

1、点击绿色小三角运行,之后输入快递公司代表的编号。

2、输入你的快递单号,之后在控制台上可以看到显示结果,如下图所示。

/7 小结/

1、不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。

2、本文章就python爬取快递100,介绍了如何去拼接字符串,以及列表如何进行类型的转换。

3、通过文中Python程序,可以清晰的看到你的快递的物流信息。

5、欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

6、如果需要本文源码的话,请在公众号后台回复“快递信息”四个字进行获取,觉得不错,记得给个star噢。

------------------- End -------------------

往期精彩文章推荐:

本文分享自微信公众号 - Python爬虫与数据挖掘(crawler_python),作者:Python进阶者

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

原始发表时间:2020-09-10

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python大神用一道题带你搞定Python函数中形参和实参问题

    昨天在Python学习群里有位路人甲问了个Python函数中关于形参和实参一个很基础的问题,虽然很基础,但是对于很多小白来说不一定简单,反而会被...

    Python进阶者
  • 给那些想学Python的建议

    这几天陆续收到很多读者、球友的留言、私信,说要怎么学Python?有没有基础的,偏小白的学习方法?我的回答是:等我统一答复。

    Python进阶者
  • 王者程序员整理的Python网络爬虫和web的系统学习路线图

    最近很多小伙伴找小编咨询,如何系统的学习Python?相信这个论题应该困扰了许多想学习Python的人,今天小编给大家讲一下一个零根底的小白,应...

    Python进阶者
  • 手把手教你用Python查询你的物流信息

    快递鸟集合了多家快递公司查询接口,输入相应快递公司编码和快递单号就可以获取到对应的物流信息很方便快捷。

    Rocky0429
  • 手把手教你用Python爬取快递100查询你的物流信息

    快递鸟集合了多家快递公司查询接口,输入相应快递公司编码和快递单号就可以获取到对应的物流信息很方便快捷。

    刘早起
  • 利用Nginx反向代理绕过腾讯云黑洞隔离

    我这里备用机用的是windows phpstudy nginx 环境,其他环境请自行测试!

    墨渊
  • [接口测试 - 基础篇] 11 掌握下python解析YAML格式也是需要的

    什么是YAML YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822。 Clark Evans在2001年5月...

    苦叶子
  • Pandas-24. Category

    Category对象的describe()函数,返回对Category的基础信息。

    悠扬前奏
  • 几种常见的判别分析分类方法在R中实现

    判别分析(Discriminant analysis)用于基于一个或多个预测变量来预测对象属于某个给定类的概率,它对于连续或分类预测变量均适用。与logisti...

    用户7585161
  • 以 Docker 为代表的传统容器到了生死存亡之际

    当云原生将容器技术作为下一代云计算的基础之一时,并不意味着容器本身停止了演化。事实上,以 Docker 为代表的传统容器在遇到多租户场景时,它的安全问题立刻暴露...

    GitHubDaily

扫码关注云+社区

领取腾讯云代金券