抢购神器哪个比较实用(抢购代码怎么写)

手把手教你自己动手做个抢购小工具

图片来自网络,侵删

一年一度的猫狗大战如期而至,小伙伴们战果如何,是不是已经做好下半个月吃土的准备了?不过比吃土更伤心的恐怕是想要的东西在眼前却抢不到的痛苦吧,广告里不是都说了“错过一次,再等一年”么。作为一个码农怎么可能让这种事情发生呢,虽然网上有很多秒杀助手之类的插件或小程序,但是毕竟要登录自己的网购账号,还是不太放心的。今天咱们就来用前几天介绍的Pyppeteer框架自己动手写个抢购秒杀小工具,没有看过我前面介绍的小伙伴可以翻翻我的主页先去了解下。下面咱们就直奔主题,自己写个秒杀小工具。当然直接想要小工具的小伙伴们可以在最下面找到。

既然是要抢购秒杀,那我们先来回顾下我们人工是怎么个操作流程的。首先我们得打开浏览器,再打开我们事先收藏好的商品秒杀网址页面,然后静静地坐在电脑屏幕前,等待秒杀开启的那一刻,然后疯狂点击加入购物车,然后“该商品已售罄!”。啊~呸~。“宝贝已成功加入购物车,请快去付款吧!”……大体就是这么个流程了。接下来我们就按照这个逻辑一步步的用代码的方式实现它吧。

正式开始前请小伙伴们按我之前文章中介绍的方法,准备好Pyppeteer库,构建好基础运行环境(三分钟的事)

回到正题按照上面我们分析的秒杀流程,第一步:打开浏览器

import asyncio from pyppeteer import launch

browser = await launch({'headless': True}) #打开浏览器   (这个参数后面会用到)

第二步:打开秒杀页面,这里我们就以华为P50这款热门机型的商品页为例,原理都是一样的,小伙伴们可以用自己心仪的商品进行试验。

page = await browser.newPage() #打开一个新的页面 await page.setViewport({'width': 1440, 'height': 960}) await page.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36 Edg/94.0.992.50") await page.evaluateOnNewDocument('() =>{ Object.defineProperties(navigator,''{ webdriver:{ get: () => false } }) }') await asyncio.wait([
  page.waitForNavigation({'timeout': 15000}),
  page.goto('https://item.jd.com/100024533316.html') #打开一个网页D址 ])

这里逐行说明下,咱们在这个无头浏览器里打开一个新的tab页,然后设置好页面大小、浏览器的UserAgent,这些大家可设置成自己喜好的参数即可。下面这行就要注意了,因为猫家狗家都不希望是用程序秒它的东西嘛,所以都会有各种检测的,其中最常见的就是webdriver的检测,所以我们就需要在页面加载的时候给这个页面设置下。最下面就是打开页面了,为了保证页面加载完成才执行下面的操作所以需要将打开页面和等待做成一个“事务”。

第三步,找到加入购物车按钮

addcart_elements = await page.xpath("//div/div/a[@id = 'InitCartUrl']") if addcart_elements is None or len(addcart_elements) == 0 or (await addcart_elements[0].boundingBox() is None):
        print('未找到购物车按钮') await browser.close() #关闭浏览器 return

页面加载完成后,通过xpath路径找到加入购物车的按钮,因为不同页面结构是不一样的,所以需要小伙伴们自己去找自己页面的路径,方法如下:打开电脑浏览器,打开商品页面,按下F12进入开发者模式,然后按图中①的元素选择按钮,这时鼠标就变成点选状态,选中加入购物车按钮②,右边就会出现高亮的代码块,这就是加入购物车的按键代码③。根据上下文的路径④,最后就能得到完整的xpath路径了

手把手教你自己动手做个抢购小工具

第四步:判断加入购物车状态,可以点击时再点击

addcart_element = addcart_elements[0]
classproperty = await (await addcart_element.getProperty('className')).jsonValue() if "btn-disable" in classproperty: print('还未开始秒杀') await browser.close() #关闭浏览器 return await asyncio.wait([
        page.waitForNavigation({}),
        addcart_element.click()
	]) print("已经抢到,赶紧去付款吧")

因为在秒杀还没开始前按钮是无法点击的,这时需要做个简单判断,当按钮是不可点击状态时就退出,当秒杀开始了可以点击后再点击。同样,当可以点击时也需要做个“事务”点击事件执行完成后再执行下面动作。

到这里其实秒杀小工具的核心功能咱们已经都实现好了是不是很简单。但是实际上因为秒杀肯定是定点开启的,所以我们还需要做一个简单的定时任务去执行它,也是几行代码搞定。

scheduler = AsyncIOScheduler(timezone="Asia/Shanghai")
scheduler.add_job(miaosha, CronTrigger(hour="20", timezone="Asia/Shanghai")) #20点整自动运行 try: scheduler.start()
except (KeyboardInterrupt, SystemExit):
			pass
loop = asyncio.get_event_loop()
loop.run_forever()

这里还需要说明下,因为篇幅原因代码内没有集成自动登录功能,关于这个问题请大家关注我,后面会专门开一篇文章进行详细的介绍。因为Pyppeteer是支持cookie保持的,所以这里大家可以在第二部分代码块中加上暂停界面,第一次运行的时候手动去登录下就好。

本文内容仅做技术学习和讨论,如大家在学习中有什么问题,可以留言或私信我,大家一起学习交流。

原创文章作者:满路 香,如若转载,请注明来自百香果号:https://bxg.huangjinbaixiangguo.com/article/25193.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
满路 香的头像满路 香
上一篇 2022年2月26日
下一篇 2022年2月26日

网友常看推荐

  • 垃圾处理费业主该不该交?

    近日有咨询者问到,因在城里买了房子,后开发商按期交付房屋,业主收房后便开始装修但是在物业办理装修事宜时,已经缴纳物业费后物业仍要求业主缴纳垃圾处理费。法律是否有规定交了物业费还得缴…

    2022年3月2日
    06120
  • 投资信托基金一般多少钱起

    从理论上讲,信托投资应该是最灵活的投资方式之一,你可以以资金投资,也可以用自己持有的债权、股权、不动产、艺术品、贵金属、股票等有价证券等任何可以自由流通的财产进行投资,但这些特殊财…

    2022年2月19日
    05580
  • 想赚钱但又不知道怎么赚

    当今社会,很多人都想赚钱,但是不知道怎么赚钱,我们该怎么办呢。 我给分为几个维度的办法吧, 1.最低一级的维度,其实不是亏钱就是赚钱。你想赚钱,别人也想赚你钱,甚至是想骗你钱。你要…

    2022年2月27日
    05480
  • 大数据真正的价值

    现代社会高速发展,科技发达,信息畅通,人与人之间的交流越来越密切,生活越来越便捷,大数据就是这个高科技时代的产物。有人把数据比喻为蕴藏能量的煤矿,大数据的价值不在于“大”,而在于“…

    2022年10月20日
    05350
  • 兄弟一起创业做生意(堂弟叫我和他一起创业)

    明朝年间,城外有个村子,有户人家叫王老爹,夫妻俩生了两个儿子,大儿子叫王大成,小儿子叫王二宝。大儿子生性憨厚老实,小儿子天性聪明,长得一表人才。 王老爹夫妻俩平日里勤勤恳恳,都靠种…

    2023年12月22日
    0710
  • 开一家汗蒸房多少投资

    看如今市场,可谓是瞬息万变,实体店的店铺几个月转手一次比比皆是,而有些老店在同一个地方就经营了几十年,开美容院的店铺多了去了,很多店面不做汗蒸房,有些却克服重重困难也要装一个,究竟…

    2022年11月8日
    03460
  • 人民币将大幅贬值的原因

    2022年人民币为何贬值,抓住弯道超车机会不好吗? 2021年是中国崛起极好的弯道超车机会,借助于非美货币普遍大幅贬值,一鼓作气直奔发达国家[1]。可是给了中国机会,但不中用啊?!…

    2022年10月8日
    06550
  • 存折取钱要身份证吗

    需要分情况讨论。5万以下不用身份证 ,5万以上需要身份证。如果非本人,委托他人代取无论金额大小都需要出示本人身份证,凭存折密码办理业务。若是招商银行存折,支取金额小于一万元,可不用…

    2023年10月19日
    01080
  • 物业维修基金是什么意思

    窗外大雪纷飞,好单位已经发布了雪休通知,可以在家里放松放松,再看看楼下园区路面的除雪情况,合计合计自己掏的物业费值不值。 想到物业费,自然而然地也想到了之前交的维修基金。接下来,房…

    2023年5月18日
    02680
  • 红包封面怎么制作

    在特殊的日子里,我们都喜欢使用V给亲朋好友发送红包来表达对晚辈或者长辈的敬意 但是在发送红包的时候却发现V红包只能使用默认的封面,这样就显得过于单调了,那么怎样才能设置自己别具一格…

    2022年6月16日
    06260

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注