python实现秒杀商品的微信自动提醒功能(代码详解)


Posted in Python onApril 27, 2020

技术实现原理:获取京东的具体的商品信息,然后再使用微信发送提醒

工具:需要两个微信号,这两个微信号互为好友

1.收集自己想要的商品url

我们就以京东来举例,获取京东的秒杀商品信息:

首先,我们在网页上打开京东,搜索我们想要的商品,这边我就以我最近买的东西为例子:

python实现秒杀商品的微信自动提醒功能(代码详解)

我们需要找到它的商品信息,需要打开浏览器的开发者模式,之后我们需要选择自己的配送地址,这个时候里面就发送一些接口请求:

python实现秒杀商品的微信自动提醒功能(代码详解)

我们选择一个有用的商品信息接口:

python实现秒杀商品的微信自动提醒功能(代码详解)

找到自己想要商品的信息接口,来判断它是否有货:

python实现秒杀商品的微信自动提醒功能(代码详解)

一般规则是:如果这个接口书籍里面有“无货”的字符信息,那就是缺货状态,否则就是有货状态,可以发送商品链接,进行购买。

我们现在已经成功获取到了商品的url信息,接下来就是设置微信了。

2.设置微信通知

微信通知我们需要两个微信号,一个作为发送方,一个作为接受方,这个两个账号需要互为好友。

注意:作为发送方的微信可能会有注册时间要求(微信好像设立了规则:如果晚于某一时间段注册的账号将不再具备网页微信登陆功能)

这边我们使用itchat模块进行模拟微信登陆:

import itchat
itchat.auto_login(hotReload=True)

hotload参数设置为True可以记住第一次登陆的状态,下一次就不需要扫码登陆了。

执行以上代码可以生成登陆二维码,你只需要扫码登陆就可以了。

接下来我们需要找到被通知的那个账号:

# 找到需要发送的对象
users = itchat.search_friends(name='神一样的男子')
print(users)

搜索好友信息可以使用好友的微信名字也可以使用备注名字,接下来我们获取发送对象的信息:

[{'Uin': 0,

'UserName': '@131572fb0f21d053055ba1caebd1c3089178a1ccafbf320bb72599c4d04a7e20',

'NickName': '吾',

'HeadImgUrl': '/cgi-bin/mmwebwx-bin/webwxgeticon?seq=670180178&username=@131572fb0f21d053055ba1caebd1c3089178a1ccafbf320bb72599c4d04a7e20&skey=@crypt_32bfc8c4_05d6f5196800a0aba56d8b80af69f09e',

'ContactFlag': 1, 'MemberCount': 0, 'MemberList': [], 'RemarkName': '神一样的男子', 'HideInputBarFlag': 0, 'Sex': 1, 'Signature': '消失在黑暗中', 'VerifyFlag': 0, 'OwnerUin': 0, 'PYInitial': 'W', 'PYQuanPin': 'wu', 'RemarkPYInitial': 'SYYDNZ', 'RemarkPYQuanPin': 'shenyiyangdenanzi', 'StarFriend': 0, 'AppAccountFlag': 0, 'Statues': 0, 'AttrStatus': 33657021, 'Province': '上海', 'City': '黄浦', 'Alias': '', 'SnsFlag': 1, 'UniFriend': 0, 'DisplayName': '', 'ChatRoomId': 0, 'KeyWord': '', 'EncryChatRoomId': '', 'IsOwner': 0}]

我们发送信息需要获取UserName字段,也就是发送对象的具体ID

# 获取发送对象的ID
userName = users[0]['UserName']

接下来我们就可以实现发送秒杀信息了。

3.实现抢货通知

首先我们需要访问京东的数据接口-----也就是我们第一步拿到的那个url,接下来我们去访问它就可以拿到返回的接口数据:

import requests
url = "https://c0.3.cn/stock?skuId=60456599372&area=2_2825_51932_0&venderId=10181278&buyNum=1&choseSuitSkuIds=&cat=9987,830,863&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=&pduid=479124268&ch=1&callback=jQuery3588468"
headers = {
   "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/531.36",
   "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
   "Connection": "keep-alive"
  }
respone = requests.get(url, headers=headers)
print(respone.text)

拿到数据之后我们就可以去判断这个数据里面有没有“无货”的字符,如果没有我们就使用itchat发送抢购信息:

if (response.text.find('无货') > 0):
 print('暂时无货: ' + skuidUrl)
else:
 print('你定时的抢购商品有货啦,点击立即购买 :' + skuidUrl)
 itchat.send("你定时的抢购商品有货啦,点击立即购买:\n{}".format(skuidUrl),
    toUserName=userName)
 flag += 1

这个抢购信息我们需要在原来的url上截取skuid,然后进行拼接:

import re
pattern = re.compile("skuId=(\d+)&")
url = "https://c0.3.cn/stock?skuId=60456599372&area=2_2825_51932_0&venderId=10181278&buyNum=1&choseSuitSkuIds=&cat=9987,830,863&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=&pduid=479124268&ch=1&callback=jQuery3588468"
result = pattern.findall(url)
skuidUrl = 'https://item.jd.com/' + result[0] + '.html'

这样我们的定时抢购就完成啦!

最后,我们可以在访问的外面设置一个while死循环,如果一直没有货就一直发送访问请求,如果OK,就跳出break!

附抢购图:

python实现秒杀商品的微信自动提醒功能(代码详解)

大家只需要点击抢购链接就能直接进行购买啦!

到此这篇关于python实现秒杀商品的微信自动提醒功能的文章就介绍到这了,更多相关python微信自动提醒内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现的石头剪子布代码分享
Aug 22 Python
简单分析Python中用fork()函数生成的子进程
May 04 Python
Python实现获取命令行输出结果的方法
Jun 10 Python
Django JWT Token RestfulAPI用户认证详解
Jan 23 Python
Django配置MySQL数据库的完整步骤
Sep 07 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
对python中assert、isinstance的用法详解
Nov 27 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
May 04 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
python tkinter模块的简单使用
Apr 07 Python
浅析python 定时拆分备份 nginx 日志的方法
Apr 27 #Python
python异步Web框架sanic的实现
Apr 27 #Python
python库skimage给灰度图像染色的方法示例
Apr 27 #Python
python实现密度聚类(模板代码+sklearn代码)
Apr 27 #Python
Django中文件上传和文件访问微项目的方法
Apr 27 #Python
详解Python中namedtuple的使用
Apr 27 #Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
Apr 27 #Python
You might like
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
thinkPHP实现表单自动验证
2014/12/24 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
JavaScript函数、方法、对象代码
2008/10/29 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
2017/03/09 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
Python查看多台服务器进程的脚本分享
2014/06/11 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
Python单元测试与测试用例简析
2019/11/09 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
numba提升python运行速度的实例方法
2021/01/25 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
Python的这些库,你知道多少?
2021/06/09 Python
JAVA springCloud项目搭建流程
2022/05/11 Java/Android