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中有趣在__call__函数
Jun 21 Python
python的re正则表达式实例代码
Jan 24 Python
python使用jieba实现中文分词去停用词方法示例
Mar 11 Python
python读取和保存图片5种方法对比
Sep 12 Python
python实现Zabbix-API监控
Sep 17 Python
Python创建一个空的dataframe,并循环赋值的方法
Nov 08 Python
Python3 log10()函数简单用法
Feb 19 Python
彻底理解Python中的yield关键字
Apr 01 Python
pyqt5 从本地选择图片 并显示在label上的实例
Jun 13 Python
Python django框架 web端视频加密的实例详解
Nov 20 Python
Python入门之基础语法详解
May 11 Python
pytorch 使用半精度模型部署的操作
May 24 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 无线电
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
关于PHP自动判断字符集并转码的详解
2013/06/26 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
js 禁用只读文本框获得焦点时的退格键
2010/04/25 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
2016/09/05 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
原生js实现Flappy Bird小游戏
2018/12/24 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
JS 5种遍历对象的方式
2020/06/16 Javascript
Python网络爬虫与信息提取(实例讲解)
2017/08/29 Python
Python实现购物系统(示例讲解)
2017/09/13 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
python中time、datetime模块的使用
2020/12/14 Python
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
Servlet如何得到客户端机器的信息
2014/10/17 面试题
护士自我鉴定总结
2014/03/24 职场文书
小学教师见习总结
2015/06/23 职场文书
给朋友的赠语
2015/06/23 职场文书
Python爬虫基础初探selenium
2021/05/31 Python