利用python的物流轨迹抓取(二)

在整个跨境出口电商的的圈子里,有两家提供跨境物流轨迹服务的厂,具体就不说了,大家都知道的,今天来简单的爬下其中一家的数据。

附上代码,比较简单。

import json
import requests
import re
import urllib.request

def track():
    num=input('请输入单号:')
    url = 'https://www.trackingmore.com/gettracedetail.php?lang=cn&tracknumber='+num+'&express=ups'
    html = urllib.request.urlopen(url)
    content = html.read().decode('utf-8')
    #print(type(content.strip('()')))str
    tra = json.loads(content.strip('()'))
    ic=tra['originCountryData']['trackinfo']
    for i in ic:
        print('描述:'+i['checkpoint_status']+'/城市:'+i['Details']+
            '/时间:'+i['Date']+'/状态:'+i['checkpoint_status'])

track()

分析:首先我们需要知道包裹轨迹数据的所在的位置,打开开发者模式。F5刷新,如下图:

利用python的物流轨迹抓取(二)

点击JS 数据,庆幸里面的js文件少呀,啊哈哈。看headers和response。发现请求是get请求。然后reusets url 对比后发现,有多于的数据,最终确定url可以缩写为https://www.trackingmore.com/gettracedetail.php?lang=cn&tracknumber=1Z3Y18900337899118&express=ups

tracknumber 就是你要查的运单号。express就是使用的物流商名称,可以在他们的网站查询到物流商名称清单。

然后对返回的数据格式正则下,筛选出每个{},每条轨迹就保留在这里面。

最终查询结果如下:

请输入单号:1Z3Y18900337899118
描述:delivered/Details:las vegas,nv,89115,us/Date:2018-07-05 12:00/状态:delivered
描述:transit/Details:las vegas,nv,us/Date:2018-07-05 04:10/状态:transit
描述:transit/Details:las vegas,nv,us/Date:2018-07-04 09:37/状态:transit
描述:transit/Details:las vegas,nv,us/Date:2018-07-04 09:36/状态:transit
描述:transit/Details:las vegas,nv,us/Date:2018-07-04 09:27/状态:transit
描述:transit/Details:ontario,ca,us/Date:2018-07-04 04:14/状态:transit
描述:transit/Details:ontario,ca,us/Date:2018-07-04 00:58/状态:transit
描述:transit/Details:us/Date:2018-06-30 00:31/状态:transit

既然数据已经抓到,写入excel表 。

运单号多的话就读个本地文件,循环下