python实现淘宝秒杀聚划算抢购自动提醒源码


Posted in Python onJune 23, 2020

说明

本实例能够监控聚划算的抢购按钮,在聚划算整点聚的时间到达时发出提醒(音频文件自己定义位置)并自动弹开页面(URL自己定义)。

同时还可以通过命令行参数自定义刷新间隔时间(默认0.1s)和监控持续时间(默认1800s)。

源码

# encoding: utf-8 
''''' 
@author: Techzero 
@email: techzero@163.com 
@time: 2014-5-18 下午5:06:29 
''' 
import cStringIO 
import getopt 
import time 
import urllib2 
import subprocess 
import sys 
 
from datetime import datetime 
 
MEDIA_PLAYER = 'C:/Program Files/Windows Media Player/wmplayer.exe' 
MEDIA_FILE = 'D:/notify.mp3' 
CHROME = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe' 
URL = 'http://detail.ju.taobao.com/home.htm?spm=608.2214381.2.1.SY0wVT&item_id=16761325430&id=10000002801432' 
NO_X11 = False 
 
def get_current_button(): 
 '''''获取当前按钮状态''' 
 content = urllib2.urlopen(URL).read() #获取页面内容 
  
 buf = cStringIO.StringIO(content.decode('gbk').encode('utf8')) #将页面内容转换为输入流 
 current_button = None 
 for line in buf: 
  line = line.strip(' \n\r') #去掉回车换行 
   
  if line.find(r'<a href="#" rel="external nofollow" class="extra notice J_BuyButtonSub">开团提醒</a>') != -1: 
   current_button = '开团提醒' 
   break 
  elif line.find(r'<div class="main-box chance ">') != -1: 
   current_button = '还有机会' 
   break 
  elif line.find(r'<span class="out floatright">卖光了...</span>') != -1: 
   current_button = '卖光了' 
   break 
  elif line.find(r'<span class="out floatright">已结束...</span>') != -1: 
   current_button = '已结束' 
   break 
  elif line.find(r'<input type="submit" class="buyaction J_BuySubmit" title="马上抢" value="马上抢"/>') != -1: 
   current_button = '马上抢' 
   break 
   
 buf.close() 
 return current_button 
 
 
def notify(): 
 '''''发出通知并用Chrome打开秒杀页面''' 
 subprocess.Popen([MEDIA_PLAYER, MEDIA_FILE]) 
 if not NO_X11: 
  subprocess.Popen([CHROME, URL]) 
  print '打开页面' 
 
 
def monitor_button(interval, last): 
 '''''开始监视按钮''' 
 elapse = 0 
 while elapse < last: 
  current_button = get_current_button() 
 
  now = datetime.now() 
  print '%d-%d-%d %d:%d:%d - 现在按钮是 %s' % (now.year, now.month, now.day, now.hour, now.minute, now.second, current_button) 
 
  if current_button == '马上抢' or current_button == '还有机会': 
   print '赶紧抢购!' 
   notify() 
   break 
  elif current_button == '卖光了' or current_button == '已结束': 
   print '下次再试吧!' 
   break 
  else: 
   print '还没开始呢,再等等吧!' 
 
  time.sleep(interval) 
  elapse += interval 
 
 
def usage(): 
 print ''''' 
usage: monitor_mac_price.py [options] 
 
Options: 
 -i interval: 30 seconds by default. 
 -l last: 1800 seconds by default. 
 -h: Print this usage. 
 -X: Run under no X11. 
''' 
 
if __name__ == '__main__': 
 try: 
  opts, args = getopt.getopt(sys.argv[1:], 'i:l:hX') 
 except getopt.GetoptError, err: 
  print str(err) 
  sys.exit(1) 
 
 interval = 0.1 
 last = 1800 
 
 for opt, val in opts: 
  if opt == '-i': 
   interval = int(val) 
  elif opt == '-l': 
   last = int(val) 
  elif opt == '-X': 
   NO_X11 = True 
  elif opt == '-h': 
   usage() 
   sys.exit() 
 
 monitor_button(interval, last)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
PyMongo安装使用笔记
Apr 27 Python
python3 实现的人人影视网站自动签到
Jun 19 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
Python入门学习指南分享
Apr 11 Python
python try except 捕获所有异常的实例
Oct 18 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
Jan 03 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
django美化后台django-suit的安装配置操作
Jul 12 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 Python
python 遍历磁盘目录的三种方法
Apr 02 Python
Python opencv缺陷检测的实现及问题解决
Apr 24 Python
初探TensorFLow从文件读取图片的四种方式
Feb 06 #Python
用十张图详解TensorFlow数据读取机制(附代码)
Feb 06 #Python
Python实现matplotlib显示中文的方法详解
Feb 06 #Python
Python实现自动上京东抢手机
Feb 06 #Python
Python获取指定文件夹下的文件名的方法
Feb 06 #Python
TensorFlow如何实现反向传播
Feb 06 #Python
tensorflow TFRecords文件的生成和读取的方法
Feb 06 #Python
You might like
PHP 实现多服务器共享 SESSION 数据
2009/08/15 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
js闭包实例汇总
2014/11/09 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
解决vue-cli创建项目的loader问题
2018/03/13 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
2019/01/24 Javascript
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
python脚本实现xls(xlsx)转成csv
2016/04/10 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
200行python代码实现2048游戏
2019/07/17 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
tensorflow 环境变量设置方式
2020/02/06 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
我的中国梦演讲稿800字
2014/08/19 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
怎么用Python识别手势数字
2021/06/07 Python
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang
ubuntu安装jupyter并设置远程访问的实现
2022/03/31 Python