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

Freigeben: 2023-07-25 17:13:50
nach vorne
2493 人浏览过

/1 前言/

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

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

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


/2 项目目标/

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


/3 项目准备/

软件:PyCharm

需要的库:urllib.request、json

网站如下:

https://www.kuaidi100.com
Nach dem Login kopieren


/4 项目分析/

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

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

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

2、找到

query?type=shentong&postid=773036432685909&temp=0.0
Nach dem Login kopieren

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


3、分析网址:

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

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

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

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


/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
Nach dem Login kopieren


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


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)
Nach dem Login kopieren


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

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


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

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


6、程序循环。

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


/6 效果展示/

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

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


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

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


/7 小结/

1、不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。
2、本文章就python爬取快递100,介绍了如何去拼接字符串,以及列表如何进行类型的转换。
3、通过文中Python程序,可以清晰的看到你的快递的物流信息。

以上是手把手教你用Python查询你的物流信息的详细内容。更多信息请关注PHP中文网其他相关文章!

Verwandte Etiketten:
Quelle:Go语言进阶学习
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!