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中使用smtplib和email模块发送邮件实例
Apr 22 Python
python生成IP段的方法
Jul 07 Python
python查看zip包中文件及大小的方法
Jul 09 Python
Python检测生僻字的实现方法
Oct 23 Python
Python 3中print函数的使用方法总结
Aug 08 Python
Django使用unittest模块进行单元测试过程解析
Aug 02 Python
python处理document文档保留原样式
Sep 23 Python
Python log模块logging记录打印用法解析
Jan 20 Python
python3实现网页版raspberry pi(树莓派)小车控制
Feb 12 Python
浅析Python 责任链设计模式
Sep 11 Python
python 常见的反爬虫策略
Sep 27 Python
openstack中的rpc远程调用的方法
Jul 09 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
pw的一个放后门的方法分析
2007/10/08 PHP
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
2016/06/13 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
Javascript UrlDecode函数代码
2010/01/09 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
Jquery插件写法笔记整理
2012/09/06 Javascript
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
2016/05/31 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
详解NodeJs项目 CentOs linux服务器线上部署
2019/09/16 NodeJs
js实现详情页放大镜效果
2020/10/28 Javascript
vue+Element-ui实现分页效果
2020/11/15 Javascript
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
利用Pytorch实现简单的线性回归算法
2020/01/15 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
amazeui树节点自动展开折叠面板并选中第一个树节点的实现
2020/08/24 HTML / CSS
中学生打架检讨书
2014/02/10 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
人民检察院起诉书
2015/05/20 职场文书
请病假条范文
2015/08/17 职场文书
Python Django ORM连表正反操作技巧
2021/06/13 Python
JavaScript ES6的函数拓展
2022/01/18 Javascript