时间过的真快,不知不觉一年已过了一半,又快到618购物狂欢节了,剁手党们都希望无论是618购物节还是双11购物节,都能够买到便宜又实惠的商品,但是真心实惠的东西往往是紧俏的,经常会出现无货的情况,我们平时又很忙,无法实时地盯着app去看?
为了自己心仪的商品有货第一时间可以通知到自己,今天小编用Python来实现商品有货的微信提醒,当然使用场景不仅仅在此,比如需要医院预约挂号已满,当有人因有事需要取消挂号时,那么就可以第一时间告知自己。
为了实现上述功能,本篇文章将按照如下步骤进行详细讲解,
-
itchat介绍
-
开发消息提醒功能
-
后台脚本部署
itchat介绍
itchat是一个开源的微信个人号接口,使用Python调用微信从未如此简单。下面介绍itchat的一些常用功能,详情功能可以参考如下文档:
'https://itchat.readthedocs.io/zh/latest/'
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PUtAQ6lY-1591959000342)(https://upload-images.jianshu.io/upload_images/23128288-f630e7725bd63985.gif?imageMogr2/auto-orient/strip)]
1.安装
pip install itchat
2.登陆
import itchat
#登入并保存登入状态,实现第一次运行时扫码,一定时间内再次运行就不用扫码了,手机微信上将显示:网页微信已登入.....
itchat.auto_login(hotReload=True)
#发送文本数据到文件助手
itchat.send("你好,Python学习与数据挖掘",toUserName="filehelper")
3.登出
itchat.logout()
4.命令行二维码
通过以下命令可以在登陆的时候使用命令行显示二维码:
itchat.auto_login(enableCmdQR=True)
5.消息发送
itchat.send,可以一次性发送多条
参数:(内容,用户)
返回值:发送结果,是否发送成功,json数据
注意:文件地址不可为中文
内容:可为单独的字符串内容,其他有【@类型@地址】,类型有图片(img)、文件(fil)、视频(vid)
用户:省略则发个自己,不稳定,msg[‘FromUserName’]表示指定用户为触发用户
res=itchat.send('文本信息的发送......!', toUserName=msg['FromUserName'])
res=itchat.send('@img@%s' % './filex/zcy.gif', toUserName=msg['FromUserName'])
res=itchat.send('@fil@%s' % './filex/tt.txt', toUserName=msg['FromUserName'])
res=itchat.send('@vid@%s' % './filex/videox.mp4', toUserName=msg['FromUserName'])
开发消息提醒功能
我们以分析上个截图的Apple iPhone XS Max (A2104) 256GB 深空灰色的为例,进行商品有货的微信提醒开发,利用F12快捷键来查找商品是否有货的接口,截图如下:
(可点击图片进行放大)
该接口输出数据为
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IMvulnP8-1591959000350)(https://upload-images.jianshu.io/upload_images/23128288-31684d0ff71f6c60?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
(可点击图片进行放大)
当发现接口数据的StockStateName字段状态由无货变成有货时,将第一时间发消息给小编的微信,并且将购买链接发送过来,方便去购买,是否是有点意思啊,兴趣是最好的老师,可以亲自测试一下。
为了测试消息是否可以发送成功,无货状态下发一句“你心仪的商品暂时无货”,截图如下:
核心代码
# 商品url
skuidUrl = 'https://item.jd.com/' + url.split('skuId=')[1].split('&')[0] + '.html'
response = requests.get(url, headers=headers)
if (response.text.find('无货') > 0):
print('----无货---')
print('暂时无货: ' + skuidUrl)
itchat.send("你心仪的商品暂时无货",toUserName=userName)
else:
print('----有货---')
itchat.send("你心仪的商品有货了,立即购买本:\n{}".format(skuidUrl),
toUserName=userName)
flag += 1
后台部署脚本
上面的验证过程都是线下进行的,如果你拥有服务器资源,可以通过发布操作将代码部署线上去,这样就可以解放你的电脑了。以Linux为服务器为例,介绍三种后台部署方法:
1.nohup 命令,xxx.py为你的代码
nohup python2.7 xxxxx.py &
2.定义了一个脚本start.sh
#!/bin/bash
cd 想要运行文件的路径名
python -u ***.py
后台执行命令
./start.sh > result.log &
3.python-daemon实现守护进程
pip install python-daemon
为解决初学者学习上的困难,专门建立的Python学习扣QUN:⑧⑤⑤-④零⑧-⑧⑨③从零基础开始到Python各领域的项目实战教程、开发工具与电子书籍。与你分享企业当下对于python人才需求及学好python的高效技巧,不停更新最新教程!点击加入我们的 python学习圈