上篇文章仅爬取了kerry网站的最后一条物流信息。而且步骤较为复杂。这篇文章为爬取了最后一条物流状态和对应的最新状态时间。输出的信息包含:物流单号,货态,最新货态日期,最新货态时间等。仍然采用了requests库和Xpath来实现需求。相比较文章(一),去掉了保存文件到本地的操作。但是不知道为什么,耗时也没减少多少。
import requests
from lxml import etree
import pandas as pd
import time
start=time.time()
#查最新货态和时间
def pa(s):
a=[1,1,1]
url='https://th.kerryexpress.com/en/track/?track='+s
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'}
response=requests.get(url,headers=headers)
html =etree.HTML(response.text)
trs = html.xpath("//div[@class='d1']/text()")
trs2=html.xpath("//div[@class='date']")[0]
date=trs2.xpath(".//div[1]/text()")[0]
hour=trs2.xpath(".//div[2]/text()")[0]
a[0]=trs[0].strip()
a[1]=date.strip()
a[2]=hour.strip()
return a
data=pd.read_excel('D:/kerry/运单号.xlsx')
list=list(data['运单号'])[1:]
L=[]
T=[]
TT=[]
for x in list:
b=pa(x)[0]
t=pa(x)[1]
tt=pa(x)[2]
L.append(b)
T.append(t)
TT.append(tt)
c={'运单号':list,'货态':L,'最新状态日期':T,'最新状态时间':TT}
C=pd.DataFrame(c)
C.to_excel('D:/kerry/result2.xlsx',index=False)
t=(time.time()-start)
print('耗时:',t)