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 26 Python
Python编程把二叉树打印成多行代码
Jan 04 Python
Python连接Redis的基本配置方法
Sep 13 Python
基于Python安装pyecharts所遇的问题及解决方法
Aug 12 Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 Python
PyTorch加载预训练模型实例(pretrained)
Jan 17 Python
Tensorflow分批量读取数据教程
Feb 07 Python
对tensorflow中cifar-10文档的Read操作详解
Feb 10 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 Python
Spring http服务远程调用实现过程解析
Jun 11 Python
常用的10个Python实用小技巧
Aug 10 Python
Pytorch 统计模型参数量的操作 param.numel()
May 13 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
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
PHP安装memcache扩展的步骤讲解
2019/02/14 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
修改好的jquery滚动字幕效果实现代码
2011/06/22 Javascript
JQuery验证工具类搜集整理
2013/01/16 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
2017/01/08 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
十个Python程序员易犯的错误
2015/12/15 Python
python中的Elasticsearch操作汇总
2019/10/30 Python
Python 脚本拉取 Docker 镜像问题
2019/11/10 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
Urban Outfitters英国官网:美国平价服饰品牌
2016/11/25 全球购物
美国顶级品牌男士大码服装店:DXL
2017/08/30 全球购物
商务日语毕业生自荐信
2013/11/23 职场文书
毕业生班级鉴定评语
2015/01/04 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers