这篇文章将为大家详细讲解有关使用python自动追踪快递信息的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网站均为Python开发。3.人工智能应用,基于大数据分析和深度学习而发展出来的人工智能本质上已经无法离开python。4、系统运维工程项目,自动化运维的标配就是python+Django/flask。5、金融理财分析,量化交易,金融分析。6、大数据分析。
其实并不复杂,只需要两步即可搞定:
爬取物流动态信息
将信息推送至邮箱
物流追踪
先说一下走过的坑,在一开始的思路就是去找个快递查询的网站查一下快递,然后抓一下包就能拿到我们需要的内容,然后写个爬虫去追踪快递信息,结果一百度发现基本国内查快递的网站用的都是快递100的API,申请个API还要提供一个网站供对方审核,并且还有次数限制。不申请API直接爬得到的物流信息被各种加密。翻遍GitHub也没有找到一个可以用的。折腾半天终于找到一个网站可以使用。直接上代码
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爬结果和提取我们需要的目标信息,当然注意到这只是中通快递的查询链接
因此我们需要再写一个函数来生成更多快递公司的查询链接,这也不是很困难
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('请选择快递公司(数字):')) 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里
物流信息推送至邮箱
在上一步我们得到了快递的最新物流信息,那么如果我们想将最新的物流信息发送到邮箱该怎样操作呢?这也不困难,只需要使用 yagmail 模块就可以,安装也很简单 pip install yagmail
直接看代码,以qq邮箱为例
def send(kuaidi): yag = yagmail.SMTP( user="登陆邮箱", password="密码", host='smtp.qq.com') # 邮箱正文 contents = kuaidi # 发送邮件 yag.send('目标邮箱', '最新快递追踪', contents) print('邮件发送成功')
第一行登陆邮箱,第二行填写发送内容,第三行发送邮件,小白也能看懂,但是需要注意的是这里的邮箱密码并不是你的QQ邮箱登陆密码而是 SMTP服务器 的密码,可以按照下面提示获取
这样只要我们写个命令行脚本定时查询你的快递物流信息发送至邮箱或者是让脚本每小时查询一次快递
#主程序 time.sleep(3600)
还是更以高频率去查询物流信息并在发生物流变动还是快递到达指定地点发送邮箱
#如果快递到达杭州则发送信息至邮箱 if '杭州' in kuaidi[0]: send()
或者是其他你关心的快递动态都可以自定义。当然要记住 只能用于自己查查快递并且注意请求频率不要对人家的服务造成影响 。
关于“使用python自动追踪快递信息的案例”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。