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 相关文章推荐
使用python在校内发人人网状态(人人网看状态)
Feb 19 Python
python的socket编程入门
Jan 29 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
Feb 01 Python
python中matplotlib的颜色及线条控制的示例
Mar 16 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
python的常用模块之collections模块详解
Dec 06 Python
使用python自动追踪你的快递(物流推送邮箱)
Mar 17 Python
Python如何使用PIL Image制作GIF图片
May 16 Python
Python实现将元组中的元素作为参数传入函数的操作
Jun 05 Python
用基于python的appium爬取b站直播消费记录
Apr 17 Python
Django使用channels + websocket打造在线聊天室
May 20 Python
如何判断pytorch是否支持GPU加速
Jun 01 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
php中几种常见安全设置详解
2010/04/06 PHP
PHP在线生成二维码代码(google api)
2013/06/03 PHP
PHP三元运算的2种写法代码实例
2014/05/12 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
php分页查询的简单实现代码
2017/03/14 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
在thinkphp5.0路径中实现去除index.php的方式
2019/10/16 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
JavaScript 继承详解(六)
2016/10/11 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
微信小程序 后台登录(非微信账号)实例详解
2017/03/31 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
Python中装饰器高级用法详解
2017/12/25 Python
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
python基于openpyxl生成excel文件
2020/12/23 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
大学新生军训感言
2014/02/25 职场文书
Vue如何实现组件间通信
2021/05/15 Vue.js