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

时间:2021-08-07 18:11:27

说明

本实例能够监控聚划算的抢购按钮,在聚划算整点聚的时间到达时自动弹开页面(URL自己定义)。

可以自定义监控持续分钟数,同时还可以通过多线程加快刷新速度。

源码

  1. package com.itechzero.pricemonitor; 
  2.   
  3. import java.io.BufferedInputStream; 
  4. import java.io.BufferedReader; 
  5. import java.io.InputStream; 
  6. import java.io.InputStreamReader; 
  7. import java.io.OutputStreamWriter; 
  8. import java.net.URI; 
  9. import java.net.URL; 
  10. import java.net.URLConnection; 
  11. import java.text.SimpleDateFormat; 
  12. import java.util.Date; 
  13.   
  14. /** 
  15.  * PriceMonitor.java 
  16.  * 
  17.  * @author Techzero 
  18.  * @Email techzero@163.com 
  19.  * @Time 2014-5-21 下午1:24:30 
  20.  */ 
  21. class MyThread extends Thread { 
  22.  public void run() { 
  23.   try { 
  24.    // 此处参数为监控持续分钟数 
  25.    PriceMonitor.monitorButton(10); 
  26.   } catch (Exception e) { 
  27.    e.printStackTrace(); 
  28.   } 
  29.  } 
  30. }; 
  31.   
  32. public class PriceMonitor { 
  33.  // 监控的商品URL 
  34.  private static String URL = "http://detail.ju.taobao.com/home.htm?spm=608.2214381.3.1.AdPEjn&item_id=38260927591&id=10000002781939"
  35.   
  36.  // 监视按钮 
  37.  public static void monitorButton(int lastMinute) { 
  38.   int nowMinute = Integer.parseInt(new SimpleDateFormat("mm").format(new Date())); 
  39.   int endMinute = Integer.parseInt(new SimpleDateFormat("mm").format(new Date())) + lastMinute; 
  40.   while (nowMinute < endMinute) { 
  41.    nowMinute = Integer.parseInt(new SimpleDateFormat("mm").format(new Date())); 
  42.    String result[] = getCurrentButtonAndForm(URL, "gb2312").split(","); 
  43.    // 当前按钮状态 
  44.    String currentButton = result[0]; 
  45.    // 马上抢 表单 
  46.    //String form = result[1]; 
  47.    String nowTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); 
  48.    System.out.println(nowTime + " - 现在按钮是 " + currentButton); 
  49.   
  50.    if (currentButton == "马上抢" || currentButton.equals("马上抢") || currentButton == "还有机会" || currentButton.equals("还有机会")) { 
  51.     System.out.println("赶紧下单!"); 
  52.     try { 
  53.      java.awt.Desktop.getDesktop().browse(new URI(URL)); 
  54.     } catch (Exception e) { 
  55.      e.printStackTrace(); 
  56.     } 
  57.     //doPost(form); 
  58.     break
  59.    } else if (currentButton == "卖光了" || currentButton.equals("卖光了") || currentButton.equals("已结束") || currentButton.equals("已结束")) { 
  60.     System.out.println("下次再试吧!"); 
  61.     break
  62.    } else { 
  63.     System.out.println("还没开始呢,再等等吧!"); 
  64.    } 
  65.   } 
  66.  } 
  67.   
  68.  // 获取当前按钮状态 
  69.  public static String getCurrentButtonAndForm(String url, String encoding) { 
  70.   if (url == null || "".equals(url.trim())) 
  71.    return null
  72.   String buttonState = ""
  73.   StringBuffer content = new StringBuffer(); 
  74.   boolean formFlag = false
  75.   try { 
  76.    // 新建URL对象 
  77.    URL u = new URL(url); 
  78.    InputStream is = new BufferedInputStream(u.openStream()); 
  79.    InputStreamReader theHTML = new InputStreamReader(is, encoding != null ? encoding : "gb2312"); 
  80.    BufferedReader br = new BufferedReader(theHTML); 
  81.    String s = ""
  82.    while ((s = br.readLine()) != null) { 
  83.     if (s.indexOf("<input type="submit" class="buyaction J_BuySubmit" title="马上抢" value="马上抢"/>") != -1) { 
  84.      buttonState = "马上抢"
  85.     } else if (s.indexOf("<a href="#" class="extra notice J_BuyButtonSub">开团提醒</a>") != -1) { 
  86.      buttonState = "开团提醒"
  87.     } else if (s.indexOf("<div class="main-box chance ">") != -1) { 
  88.      buttonState = "还有机会"
  89.     } else if (s.indexOf("<span class="out floatright">卖光了...</span>") != -1) { 
  90.      buttonState = "卖光了"
  91.     } else if (s.indexOf("<span class="out floatright">已结束...</span>") != -1) { 
  92.      buttonState = "已结束"
  93.     } 
  94.     if (s.indexOf("<form class="J_BuySubForm" data-ccb="0" data-ques="0" action") != -1) { 
  95.      content.append(s + " "); 
  96.      formFlag = true
  97.     } 
  98.     if (formFlag == true) { 
  99.      if (s.indexOf("<input name='_tb_token_' type='hidden' value") != -1) { 
  100.       content.append(s + " "); 
  101.      } 
  102.      if (s.indexOf("<input type="hidden" name="_input_charset" value") != -1) { 
  103.       content.append(s + " "); 
  104.      } 
  105.      if (s.indexOf("<input type="hidden" name="itemId" value") != -1) { 
  106.       content.append(s + " "); 
  107.      } 
  108.      if (s.indexOf("<input type="hidden" name="id" value") != -1) { 
  109.       content.append(s + " "); 
  110.      } 
  111.      if (s.indexOf("<input type="hidden" name="tgType" value") != -1) { 
  112.       content.append(s + " "); 
  113.      } 
  114.      if (s.indexOf("<input type="submit" class="buyaction J_BuySubmit"") != -1) { 
  115.       content.append(s + " "); 
  116.      } 
  117.      if (s.indexOf("</form>") != -1) { 
  118.       content.append(s + " "); 
  119.      } 
  120.     } 
  121.     if (s.indexOf("<div class="time-banner">") != -1) { 
  122.      break
  123.     } 
  124.    } 
  125.    br.close(); 
  126.   } catch (Exception e) { 
  127.    System.err.println(e); 
  128.    return "Open URL Error"
  129.   } 
  130.   return buttonState + "," + content; 
  131.  } 
  132.   
  133.  // 提交表单 
  134.  public static String doPost(String form) { 
  135.   StringBuffer content = new StringBuffer(); 
  136.   try { 
  137.    URLConnection connection = new URL(URL).openConnection(); 
  138.    connection.setDoOutput(true); 
  139.    OutputStreamWriter os = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); 
  140.    os.write(form); 
  141.    os.flush(); 
  142.    os.close(); 
  143.    InputStream is = connection.getInputStream(); 
  144.    InputStreamReader theHTML = new InputStreamReader(is); 
  145.    BufferedReader br = new BufferedReader(theHTML); 
  146.    String s = ""
  147.    while ((s = br.readLine()) != null) { 
  148.     content.append(s + " "); 
  149.    } 
  150.   } catch (Exception e) { 
  151.    e.printStackTrace(); 
  152.   } 
  153.   // 返回提交表单后返回的页面内容 
  154.   return content.toString(); 
  155.  } 
  156.    
  157.  // 登录 
  158.  public static void doLogin(String username, String password) { 
  159.   String form = "<form id="J_StaticForm" action="https://login.taobao.com/member/login.jhtml" method="post" autocomplete="on"><input type="text" name="TPL_username" id="TPL_username_1" value="" + username + ""><input type="password" name="TPL_password" id="TPL_password_1" value="" + password + ""><input type="hidden" id="J_TPL_redirect_url" name="TPL_redirect_url" value="http://www.taobao.com/?spm=a2107.1.1000340.1.AL2Mpn"><button type="submit" id="J_SubmitStatic">登 录</button></form>"; 
  160.   doPost(form); 
  161.  } 
  162.   
  163.  public static void main(String[] args) { 
  164.   //doLogin(); 
  165.   // new MyThread().start(); 
  166.   // new MyThread().start(); 
  167.   // new MyThread().start(); 
  168.   // new MyThread().start(); 
  169.   // new MyThread().start(); 
  170.   // new MyThread().start(); 
  171.   // new MyThread().start(); 
  172.   new MyThread().start(); 
  173.  } 

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

原文链接:http://blog.csdn.net/Techzero/article/details/26686283