手把手教你用Python查詢你的物流訊息

發布: 2023-07-25 17:13:50
轉載
2462 人瀏覽過

/1 前言/

#    我們常常會去查快遞的物流單號,可是這些物流單號是從哪裡來的呢?

    快遞鳥集合了多家快遞公司查詢接口,輸入對應快遞公司編碼和快遞單號就可以獲得對應的物流資訊很方便快速。

手把手教你用Python查詢你的物流訊息


#/2 專案目標/

    教導大家如何用Python程式來查詢自己的物流資訊。


#/3 專案準備/

軟體:PyCharm

#所需的函式庫:##urllib.request、json#

網站如下:

https://www.kuaidi100.com
登入後複製


/4 專案分析/

一、#如何取得真正的網址,拿相對應的介面?

1、chrome瀏覽器F12檢查,隨便輸入一個快遞單號,點選尋找。如圖:

手把手教你用Python查詢你的物流訊息


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解析获取对应的字段。

手把手教你用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
登入後複製


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、點選綠色小三角運行,之後輸入快遞公司代表的編號。

手把手教你用Python查詢你的物流訊息


2、輸入你的快遞單號,之後在控制台上可以看到顯示結果,如下圖所示。

手把手教你用Python查詢你的物流訊息


/7小結/

1、不建議抓取太多數據,容易對伺服器造成負載,淺嚐輒止即可。
2、這篇文章就python爬取快遞100,介紹如何去拼接字串,以及清單如何進行類型的轉換。
3、透過文中Python程序,可以清楚的看到你的快遞的物流資訊。

以上是手把手教你用Python查詢你的物流訊息的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:Go语言进阶学习
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!