def is_item_removed(skuId): 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", "Referer": "http://trade.jd.com/shopping/order/getOrderInfo.action", "Connection": "keep-alive", 'Host': 'item.jd.com', } url = 'https://item.jd.com/{}.html'.format(skuId) page = requests.get(url=url, headers=headers) #return '该商品已下柜' not in page.text if ('该商品已下柜' not in page.text): logger.info('[%s]类型口罩有货啦!马上下单', skuId) skuidUrl = 'https://item.jd.com/' + skuId + '.html' if buyMask(skuId): #sendMail(mail, skuidUrl, True) message.send(skuidUrl, True) sys.exit(1) else: #sendMail(mail, skuidUrl, False) message.send(skuidUrl, False) else: if not pure_mode: logger.info('[%s]类型口罩有货,但已下柜商品', skuId)
def validate_cookies(): for flag in range(1, 3): if not spider.checkLogin(): if not spider.login_by_QR(): message.send("【京东口罩监控服务已开启】", True) sys.exit(-1)
if('该商品已下柜' not in page.text): logger.info('[%s]类型口罩有货啦!马上下单', skuId) skuidUrl = 'https://item.jd.com/' + skuId + '.html' if buyMask(skuId): #sendMail(mail, skuidUrl, True) message.send(skuidUrl, True) sys.exit(1) else: #sendMail(mail, skuidUrl, False) message.send(skuidUrl, False) else: if not pure_mode: logger.info('[%s]类型口罩有货,但已下柜商品', skuId) message = message(messageType=messageType, sc_key=sc_key, mail=mail) message.send("【京东口罩监控服务已开启】", True) while (1): try: if flag == 1: validate_cookies() getUsername() checkSession = requests.Session() checkSession.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" } starttime = datetime.datetime.now() flag += 1 inStockSkuid = check_stock() auto_buy(inStockSkuid)
checkSession.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" } logger.info('第' + str(flag) + '次 ') flag += 1 inStockSkuid = check_stock() for skuId in inStockSkuid: if item_removed(skuId): logger.info('[%s]类型口罩有货啦!马上下单', skuId) skuidUrl = 'https://item.jd.com/' + skuId + '.html' if buyMask(skuId): message.send(skuidUrl, True) sys.exit(1) else: message.send(skuidUrl, False) else: logger.info('[%s]类型口罩有货,但已下柜商品', skuId) timesleep = random.randint(5, 15) / 10 time.sleep(timesleep) if flag % 40 == 0: logger.info('校验是否还在登录') validate_cookies() except Exception as e: import traceback print(traceback.format_exc()) time.sleep(10)