Python实现淘宝秒杀聚划算抢购自动提醒源码

yipeiwu_com6年前Python基础

说明

本实例能够监控聚划算的抢购按钮,在聚划算整点聚的时间到达时发出提醒(音频文件自己定义位置)并自动弹开页面(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腾讯语音合成实现过程解析

一、腾讯语音合成介绍 腾讯云语音合成技术(TTS)可以将任意文本转化为语音,实现让机器和应用张口说话。 腾讯TTS技术可以应用到很多场景,比如,移动APP语音播报新闻;智能设备语音提醒...

python基本语法练习实例

1、打印九九乘法表 #只打印结果 for i in range(1,10): for j in range(1,i+1): print(i*j,end=" ") pr...

压缩包密码破解示例分享(类似典破解)

昨天翻硬盘,找到一个好东西,可惜自己加了密码自己不记得了。试了几个常用的没试出来,于是写了这么个小脚本来替我尝试。。呵呵,还真给解出来了。python脚本内容如下,跑跑自己加密的压缩包还...

Python高级用法总结

列表推导(list comprehensions) 场景1:将一个三维列表中所有一维数据为a的元素合并,组成新的二维列表。 最简单的方法:新建列表,遍历原三维列表,判断一维数据是否为a,...

Python子类继承父类构造函数详解

如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法,或者不重写父类的构造方法。 子类不重写 __init__,实例化子类时,会自动调用父类定义的 __init__。 cl...