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实现的扫雷游戏实例代码
Aug 01 Python
在Python的Flask框架中使用日期和时间的教程
Apr 21 Python
Python中用于检查英文字母大写的isupper()方法
May 19 Python
Python的Django中将文件上传至七牛云存储的代码分享
Jun 03 Python
python 开发的三种运行模式详细介绍
Jan 18 Python
浅谈python中的实例方法、类方法和静态方法
Feb 17 Python
Python求均值,方差,标准差的实例
Jun 29 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
Jul 15 Python
通过实例了解python property属性
Nov 01 Python
Python文字截图识别OCR工具实例解析
Mar 05 Python
总结python 三种常见的内存泄漏场景
Nov 20 Python
Ubuntu16安装Python3.9的实现步骤
Dec 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
部署PHP项目应该注意的几点事项分享
2013/12/20 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
用Javascript实现UTF8编码转换成gb2312编码
2006/12/22 Javascript
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
JQuery 学习技巧总结
2010/05/21 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
axios学习教程全攻略
2017/03/26 Javascript
Validform验证时可以为空否则按照指定格式验证
2017/10/20 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
js中值引用和地址引用实例分析
2019/06/21 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
python 实现简易的记事本
2020/11/30 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
详解移动端h5页面根据屏幕适配的四种方案
2020/04/15 HTML / CSS
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
药学专业个人的自我评价
2013/12/31 职场文书
作风建设年度心得体会
2014/10/29 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
同意转租证明
2015/06/24 职场文书
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL
Android自定义双向滑动控件
2022/04/19 Java/Android
vue 给数组添加新对象并赋值
2022/04/20 Vue.js