写了个监视酷讯火车票的 Python 程序

受不了了,买火车票买不到,只好盯上黄牛票了,可是没法不停地刷页面啊,刚刚就错过了一个发布了 20 分钟的黄牛票,打电话回去时已经打不通了。。。-_-#

就写了个程序来解决这个问题,粘了一堆代码(参考太多,头一次写这种东西,原作者勿怪),总算成了,可能有 bug,欢迎提交 patch 或者更好的解决办法。

可以通过修改下面的参数来修改程序执行:

url = "http://piao.kuxun.cn/beijing-jinggangshan/" # 把火车票的搜索地址粘在这里,这里假设是北京到井冈山的
key = "2张"                                        # 搜索关键字,我得俩人啊。。。 
sequence = 60#60 * 5                               # 搜索间隔,给服务器压力别太大,每分钟一次就行了。

#!/usr/bin/python
# encoding: utf-8

import urllib2
import mailbox
import time
import os
import re
from sgmllib import SGMLParser

class URLListName(SGMLParser):
is_a=&quot&quot
name=[]
def start_a(self, attrs):
self.is_a=1
def end_a(self):
self.is_a=&quot&quot
def handle_data(self, text):
if self.is_a:
self.name.append(text)

url = &quothttp://piao.kuxun.cn/beijing-jinggangshan/&quot
key = &quot2张&quot
sequence = 60#60 * 5

request = urllib2.Request(url)
request.add_header(&aposUser-Agent&apos, &aposMozilla/5.0&apos)
opener = urllib2.build_opener()
data = opener.open(request).read()

ticket_name = URLListName()
ticket_name.feed(data)
cache=[]

while 1:
try:
print &quotbeign retrive&quot
data = opener.open(request).read()
ticket_name.feed(data)
print &quotbeign scan&quot

    for result in ticket_name.name:
        if result and result.find(key) &gt= 0:
            if result in cache:
                pass
            else:
                print &quotfound:&quot + result
                cache.append(result)
    
    print &quotscan finished, begin sleep &quot + str(sequence) + &quot seconds.&quot
    time.sleep(sequence)
except:
    raise

版权所有丨转载请注明出处:https://kxq.io/archives/写了个监视酷讯火车票的python程序