python实现秒杀商品的微信自动提醒功能(附代码)
技术实现原理:获取京东的具体的商品信息,然后再使用微信发送提醒
工具:需要两个微信号,这两个微信号互为好友
如果你处于想学python或者正在学习python,python的教程不少了吧,但是是最新的吗?说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的python教程。获取方式,私信小编 “ 资料 ”,即可免费获取哦!
1.收集自己想要的商品url
我们就以京东来举例,获取京东的秒杀商品信息:
首先,我们在网页上打开京东,搜索我们想要的商品,这边我就以我最近买的东西为例子:
我们需要找到它的商品信息,需要打开浏览器的开发者模式,之后我们需要选择自己的配送地址,这个时候里面就发送一些接口请求:
我们选择一个有用的商品信息接口:
找到自己想要商品的信息接口,来判断它是否有货:
一般规则是:如果这个接口书籍里面有“无货”的字符信息,那就是缺货状态,否则就是有货状态,可以发送商品链接,进行购买。
我们现在已经成功获取到了商品的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!
附抢购图:
大家只需要点击抢购链接就能直接进行购买啦!