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

时间:2022-09-16 13:39:39

说明

本实例能够监控聚划算的抢购按钮,在聚划算整点聚的时间到达时发出提醒(音频文件自己定义位置)并自动弹开页面(URL自己定义)。

同时还可以通过命令行参数自定义刷新间隔时间(默认0.1s)和监控持续时间(默认1800s)。

源码

  1. # encoding: utf-8 
  2. ''''
  3. @author: Techzero 
  4. @email: techzero@163.com 
  5. @time: 2014-5-18 下午5:06:29 
  6. ''
  7. import cStringIO 
  8. import getopt 
  9. import time 
  10. import urllib2 
  11. import subprocess 
  12. import sys 
  13.   
  14. from datetime import datetime 
  15.   
  16. MEDIA_PLAYER = 'C:/Program Files/Windows Media Player/wmplayer.exe' 
  17. MEDIA_FILE = 'D:/notify.mp3' 
  18. CHROME = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe' 
  19. URL = 'http://detail.ju.taobao.com/home.htm?spm=608.2214381.2.1.SY0wVT&item_id=16761325430&id=10000002801432' 
  20. NO_X11 = False 
  21.   
  22. def get_current_button(): 
  23.  '''''获取当前按钮状态''' 
  24.  content = urllib2.urlopen(URL).read() #获取页面内容 
  25.    
  26.  buf = cStringIO.StringIO(content.decode('gbk').encode('utf8')) #将页面内容转换为输入流 
  27.  current_button = None 
  28.  for line in buf: 
  29.   line = line.strip(' ') #去掉回车换行 
  30.     
  31.   if line.find(r'<a href="#" rel="external nofollow" class="extra notice J_BuyButtonSub">开团提醒</a>') != -1: 
  32.    current_button = '开团提醒' 
  33.    break 
  34.   elif line.find(r'<div class="main-box chance ">') != -1: 
  35.    current_button = '还有机会' 
  36.    break 
  37.   elif line.find(r'<span class="out floatright">卖光了...</span>') != -1: 
  38.    current_button = '卖光了' 
  39.    break 
  40.   elif line.find(r'<span class="out floatright">已结束...</span>') != -1: 
  41.    current_button = '已结束' 
  42.    break 
  43.   elif line.find(r'<input type="submit" class="buyaction J_BuySubmit" title="马上抢" value="马上抢"/>') != -1: 
  44.    current_button = '马上抢' 
  45.    break 
  46.     
  47.  buf.close() 
  48.  return current_button 
  49.   
  50.   
  51. def notify(): 
  52.  '''''发出通知并用Chrome打开秒杀页面''' 
  53.  subprocess.Popen([MEDIA_PLAYER, MEDIA_FILE]) 
  54.  if not NO_X11: 
  55.   subprocess.Popen([CHROME, URL]) 
  56.   print '打开页面' 
  57.   
  58.   
  59. def monitor_button(interval, last): 
  60.  '''''开始监视按钮''' 
  61.  elapse = 0 
  62.  while elapse < last: 
  63.   current_button = get_current_button() 
  64.   
  65.   now = datetime.now() 
  66.   print '%d-%d-%d %d:%d:%d - 现在按钮是 %s' % (now.year, now.month, now.day, now.hour, now.minute, now.second, current_button)  
  67.   
  68.   if current_button == '马上抢' or current_button == '还有机会'
  69.    print '赶紧抢购!' 
  70.    notify() 
  71.    break 
  72.   elif current_button == '卖光了' or current_button == '已结束'
  73.    print '下次再试吧!' 
  74.    break 
  75.   else
  76.    print '还没开始呢,再等等吧!' 
  77.   
  78.   time.sleep(interval) 
  79.   elapse += interval 
  80.   
  81.   
  82. def usage(): 
  83.  print ''''
  84. usage: monitor_mac_price.py [options] 
  85.   
  86. Options: 
  87.  -i interval: 30 seconds by default
  88.  -l last: 1800 seconds by default
  89.  -h: Print this usage. 
  90.  -X: Run under no X11. 
  91. ''
  92.   
  93. if __name__ == '__main__'
  94.  try
  95.   opts, args = getopt.getopt(sys.argv[1:], 'i:l:hX'
  96.  except getopt.GetoptError, err: 
  97.   print str(err) 
  98.   sys.exit(1) 
  99.   
  100.  interval = 0.1 
  101.  last = 1800 
  102.   
  103.  for opt, val in opts: 
  104.   if opt == '-i'
  105.    interval = int(val) 
  106.   elif opt == '-l'
  107.    last = int(val) 
  108.   elif opt == '-X'
  109.    NO_X11 = True 
  110.   elif opt == '-h'
  111.    usage() 
  112.    sys.exit() 
  113.   
  114.  monitor_button(interval, last) 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://blog.csdn.net/techzero/article/details/26675003