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 相关文章推荐
动态创建类实例代码
Oct 07 Python
python在Windows8下获取本机ip地址的方法
Mar 14 Python
初步探究Python程序的执行原理
Apr 11 Python
图文讲解选择排序算法的原理及在Python中的实现
May 04 Python
Python分割指定页数的pdf文件方法
Oct 26 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
flask应用部署到服务器的方法
Jul 12 Python
安装python及pycharm的教程图解
Oct 10 Python
使用python求解二次规划的问题
Feb 29 Python
python中判断文件结束符的具体方法
Aug 04 Python
学习Python需要哪些工具
Sep 04 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 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中日期加减法运算实现代码
2011/12/08 PHP
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
Django中使用group_by的方法
2015/05/26 Python
django2 快速安装指南分享
2018/01/05 Python
tensorflow实现KNN识别MNIST
2018/03/12 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
Django-Scrapy生成后端json接口的方法示例
2020/10/06 Python
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
建筑施工实习自我鉴定
2013/09/19 职场文书
毕业生找工作推荐信
2013/11/21 职场文书
项目工作说明书
2014/07/29 职场文书
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
先进个人总结范文
2015/02/15 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
详解Python描述符的工作原理
2021/06/11 Python
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android