<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          解放雙手,用Python自動追蹤你的快遞

          共 2319字,需瀏覽 5分鐘

           ·

          2020-08-01 01:05

          前言

          如今電商如此發(fā)達,各種購物節(jié)簡直就沒有間隔,收快遞成了很多人的日常生活的一部分。但有時候一個快遞幾天都沒送到,你是否忍不住反復去查,但又覺得麻煩呢?

          今天我們就來用python自動為你查詢快遞信息,并在物流發(fā)生更新或者到達指定地點時第一時間將物流推送至你的郵箱。


          其實并不復雜,只需要兩步即可搞定:
          • 爬取物流動態(tài)信息
          • 將信息推送至郵箱

          物流追蹤

          先說一下走過的坑,在一開始的思路就是去找個快遞查詢的網(wǎng)站查一下快遞,然后抓一下包就能拿到我們需要的內(nèi)容,然后寫個爬蟲去追蹤快遞信息,結(jié)果一百度發(fā)現(xiàn)基本國內(nèi)查快遞的網(wǎng)站用的都是快遞100的API,申請個API還要提供一個網(wǎng)站供對方審核,并且還有次數(shù)限制。不申請API直接爬得到的物流信息被各種加密。翻遍GitHub也沒有找到一個可以用的。折騰半天終于找到一個網(wǎng)站可以使用。以后不好保證,但至少截至發(fā)文時仍然可用。


          直接上代碼:


          import?requests
          import?bs4
          import?re
          kuaidi = []
          url='http://m.46644.com/express/result.php?typetxt=%D6%D0%CD%A8&type=zto&number=你的單號'
          response = requests.get(url)
          response.encoding = 'gb18030'?
          response = response.text
          soup = bs4.BeautifulSoup(response,'html.parser',from_encoding="utf8")
          for?i in soup.findAll(name='div',attrs = {'class':'icontent'}):
          ????kuaidi.append(i.get_text())
          ????print(i.get_text())


          這一段代碼在各種爬蟲案例中我們使用過很多次,就不過多解讀了,用 requests + bs4 爬結(jié)果和提取我們需要的目標信息,當然注意到這只是中通快遞的查詢鏈接:



          因此我們需要再寫一個函數(shù)來生成更多快遞公司的查詢鏈接。這也不是很困難增加一個代碼對應關(guān)系即可:


          def?express_type_get():
          ??express_type = ('sfexpress','yunda','sto','yto','zto','ems','ttdex','htky','qfkd','chinapost')
          ??print('////////////////快遞公司////////////////\n1.順豐 2.韻達 3.申通 4.圓通 5.中通\n6.EMS 7.天天 8.匯通 9.全峰 10.郵政\n////////////////////////////////////////')
          ??while?True:
          ????express = int(input('請選擇快遞公司(數(shù)字):'))
          ????if?express:
          ??????if?express <= 10?and?express >= 1:
          ????????break
          ??????else:
          ????????print("錯誤的選擇!")
          ????else:
          ??????print("不能為空!")
          ??return?express_type[express-1]

          def?get_url(code,id):
          ????url = 'http://m.46644.com/express/result.php?typetxt=%D6%D0%CD%A8&type='?+ code + '&number='?+ id
          ????
          ????return?url


          這樣我們就完成了第一步!最終我們將所有的物流信息保存在一個list里:


          物流信息推送至郵箱

          在上一步我們得到了快遞的最新物流信息,那么如果我們想將最新的物流信息發(fā)送到郵箱該怎樣操作呢?這也不困難,只需要使用yagmail模塊就可以,安裝也很簡單:

          pip install?yagmail


          直接看代碼,以qq郵箱為例:


          def?send(kuaidi):
          ????yag = yagmail.SMTP( user="登陸郵箱", password="密碼", host='smtp.qq.com')
          ????# 郵箱正文
          ????contents = kuaidi
          ????# 發(fā)送郵件
          ????yag.send('目標郵箱', '最新快遞追蹤', contents)
          ????print('郵件發(fā)送成功')


          第一行登陸郵箱,第二行填寫發(fā)送內(nèi)容,第三行發(fā)送郵件,小白也能看懂,但是需要注意的是這里的郵箱密碼并不是你的QQ郵箱登陸密碼而是SMTP服務器的密碼,可以按照下面提示獲取



          這樣只要我們寫個命令行腳本,定時查詢你的快遞物流信息,并發(fā)送至郵箱??梢允亲屇_本每小時查詢一次快遞:


          #?主程序
          time.sleep(3600)


          也可以用更高頻率去查詢物流信息,并在發(fā)生物流變動或快遞到達指定地點發(fā)送郵箱:


          #如果快遞到達杭州則發(fā)送信息至郵箱
          if?'杭州'?in?kuaidi[0]:
          ????send()


          也可自定義為其他你關(guān)心的快遞動態(tài)。


          當然,在抓取信息時請注意:只能用于自己查查快遞,并且請求頻率不要太高,以免影響人家的正常服務。


          作者:劉早起早起?

          來源:早起Python




          _往期文章推薦_
          用Python免費發(fā)送定時郵件




          瀏覽 30
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲精品乱码久久久久久蜜桃不卡 | 天天日,天天干,天天射 | 日韩A片在线免费观看 | 欧美性猛交XXXXX无码婷 日日嗨av一区二区三区免费 | 伊人国产精品 |