Python实现秒杀商品的微信自动提醒功能(附代码)

发表于:2020-4-28 09:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:麦叶    来源:网络转载

  技术实现原理:获取京东的具体的商品信息,然后再使用微信发送提醒
  工具:需要两个微信号,这两个微信号互为好友
  如果你处于想学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!
  附抢购图:
  大家只需要点击抢购链接就能直接进行购买啦!

本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号