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调用java的Webservice示例
Mar 10 Python
Python简单日志处理类分享
Feb 14 Python
Python接收Gmail新邮件并发送到gtalk的方法
Mar 10 Python
简单总结Python中序列与字典的相同和不同之处
Jan 19 Python
利用Python如何制作好玩的GIF动图详解
Jul 11 Python
Python操作SQLite数据库过程解析
Sep 02 Python
Python 日期的转换及计算的具体使用详解
Jan 16 Python
tensorflow对图像进行拼接的例子
Feb 05 Python
python爬虫基础知识点整理
Jun 02 Python
Python读取二进制文件代码方法解析
Jun 22 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
Nov 24 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
通过文字传递创建的图形按钮
2006/10/09 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
PHP的自定义模板引擎
2017/03/24 PHP
lib.utf.js
2007/08/21 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
2015/05/18 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
修改ligerui 默认确认按钮的方法
2016/12/27 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python中__call__方法示例分析
2014/10/11 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
使用Python脚本和ADB命令实现卸载App
2017/02/10 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
python实现猜数字游戏
2020/03/25 Python
Python二元算术运算常用方法解析
2020/09/15 Python
Python字符串的15个基本操作(小结)
2021/02/03 Python
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
数控技术与应用毕业生自荐信
2013/09/24 职场文书
妈妈的账单教学反思
2014/02/06 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
广告创意求职信
2014/03/17 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL
关于MySQL中explain工具的使用
2023/05/08 MySQL