如何用python编写抢购程序源码_Python实现淘宝秒杀聚划算抢购自动提醒源码-程序员宅基地

技术标签: 如何用python编写抢购程序源码  

说明

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

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

源码

# encoding: utf-8

'''''

@author: Techzero

@email: [email protected]

@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'开团提醒') != -1:

current_button = '开团提醒'

break

elif line.find(r'

') != -1:

current_button = '还有机会'

break

elif line.find(r'卖光了...') != -1:

current_button = '卖光了'

break

elif line.find(r'已结束...') != -1:

current_button = '已结束'

break

elif line.find(r'') != -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)

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39595310/article/details/111018606

智能推荐

android代码svn需要忽略的文件_svn需要屏蔽build.gradle文件吗-程序员宅基地

文章浏览阅读317次。一般需要忽略.idea文件夹、.gradle文件夹、所有的build文件夹、所有的.iml文件及local.properties文件,当然build.gradle、setting.gradle是不可以忽略的,我们忽略的这些文件夹都在项目编译过程中可以自动为我们生成的_svn需要屏蔽build.gradle文件吗

若依springcloud 前后端分离 集成 websocket_springcloud集成websocket-程序员宅基地

文章浏览阅读4.2k次,点赞5次,收藏24次。添加websocket 依赖 <!--websocket--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>网管配置服务转_springcloud集成websocket

成功解决SyntaxError: future feature annotations is not defined-程序员宅基地

文章浏览阅读1.5w次,点赞9次,收藏13次。​成功解决SyntaxError:futurefeatureannotationsisnotdefined目录解决问题解决思路解决方法解决问题SyntaxError:futurefeatureannotationsisnotdefined解决思路语法错误:没有定义futurefeature注释解决方法实际上是python版本不对,该语法需要在python3.7以上,而当前版本在python3.6所以导致此错误!T1、Anaconda下安装_syntaxerror: future feature annotations is not defined

js控制输入框禁止输入和允许输入_js 某个input框的enter 其他input禁止-程序员宅基地

文章浏览阅读8.5k次。初始,部分输入框禁止输入:$(document).ready(function(){ $("#fundCode").prop("disabled",true); $("#convertFundCode").prop("disabled",true); $("#allowtradeVol").prop("disabled",true); $("#appVol")._js 某个input框的enter 其他input禁止

哈夫曼树数据压缩c语言算法,特殊的树:哈夫曼树2-程序员宅基地

文章浏览阅读143次。1.哈夫曼树的查找算法查找算法根据构建哈夫曼树算法衍生而来,我们在构建二叉树时需要查找出哪些数据最小,以符合我们哈夫曼树的最优解情况。查找权重值最小的两个结点的思想是:从待处理数据的头部位置开始,首先找到两个无父结点的结点(说明还未使用其构建成树),然后和后续无父结点的结点依次做比较,有两种情况需要考虑:l 如果比两个结点中较小的那个还小,就保留这个结点,删除原来较大的结点;l 如果介于两个结..._数据压缩赫夫曼树c语言

微信小程序之网络数据请求 wx:request的简单使用_微信小程序 wx.request-程序员宅基地

文章浏览阅读5.1k次,点赞2次,收藏15次。我们可以在微信开发者工具中,临时开启「开发环境不校验请求域名、TLS 版本及 HTTPS 证书」选项,跳过 request 合法域名的校验。例如:请求黑马微信小程序课程的一个数据接口。出于安全性方面的考虑,小程序官方对。_微信小程序 wx.request

随便推点

Android禁止安装三方应用(屏蔽所有安装应用的方式)_禁用手动安转-程序员宅基地

文章浏览阅读2.2w次,点赞5次,收藏48次。android系统安装应用有四种方式1.系统应用安装――开机时完成,没有安装界面2.网络下载应用安装――通过market应用完成,没有安装界面3.ADB工具安装――没有安装界面。4.第三方应用安装――通过现有的APK文件安装,有安装界面,由packageinstaller.apk应用处理安装及卸载过程的界面。1.禁止ADB和应用商店安装由“frameworks\base\services\core\java\com\android\server\pm\Packag..._禁用手动安转

CentOS 7输入startx无法启动图形化界面_centos startx-程序员宅基地

文章浏览阅读3.1w次,点赞19次,收藏48次。前两天在学习linux虚拟化的时候, 发现虚拟机磁盘空间不足, 由于当初分区的时候不是用lvm来分区的, 导致无法扩容, 所以只能新建了一台虚拟机来学习. 然而在新建完成后, 按照之前老师教的一系列优化手段, 将这台手段优化到我认为最优的条件下, 重启了一下系统, 发现登录界面自动回到了字符界面. 这可把我给郁闷坏了, 好端端的怎么就变成了字符界面了呢? 于是输..._centos startx

RoseHA集群:RHEL+RoseMirror+Oracle【2】-程序员宅基地

文章浏览阅读391次。博主正在参加“2011年度IT博客大赛”,欢迎帮顶! @投票地址@---------------------------------------------三.安装Rose Mirror HA:·准备工作: 在安装 Rose Mirror HA 前检查相应的软件包是否安装,如果没有安装通过系统安装盘进行安装。要正常的运行 ..._rose ha监控脚本

nox夜神模拟器连接不上android studio,用bat脚本快速输入命令_电脑使用夜神模拟器教程,bat文件-程序员宅基地

文章浏览阅读230次。用bat命令快速使android studio连接夜神模拟器_电脑使用夜神模拟器教程,bat文件

python字典keys函数_Python字典中几个常用函数总结-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏3次。1、get() 返回指定键的值,如果值不在字典中返回default值。语法:dict.get(key,default=None)参数:key 字典中要查找的键。default 如果指定键的值不存在时,返回该默认值值。例:dict={'Name':'alex','Age':21}print("Name is:%s"% dict.get('Name')+"\n"+ "Age is:%d"% d..._keys函数

Dual-AMN论文阅读

寻找多源知识图谱(KG)中的等效实体是知识图谱集成的关键步骤,也称为实体对齐(EA)。然而,大多数现有的 EA 方法效率低下且可扩展性差。最近的总结指出,其中一些甚至需要几天的时间来处理包含 200000 个节点(DWY100K)的数据集。我们认为过度复杂的图编码器和低效的负采样策略是两个主要原因。在本文中,我们提出了一种新颖的知识图谱编码器——双重注意力匹配网络(Dual-AMN),它不仅可以智能地对图内和跨图信息进行建模,而且还大大降低了计算复杂度。