python learning tutorial, 12306 train ticket grabbing system

python learning tutorial, 12306 train ticket grabbing system

Click the blue word "python tutorial" to follow us!

Code display:

import urllib.request as request

    import http.cookiejar as cookiejar

    import re

    import os

    import smtplib

    from email.mime.text import MIMEText

    import time

    user ='' #Login mailbox

    pwd =''#Mailbox password

    to = [''] #Sent mailbox

    with open('D:\Python source code\city.txt','r') as f:

       a = f.read()

    station = re.compile(u'\w+:(.+?):(\w+):\d').findall(a)

    dic1 = {}

    for b in range(0, len(station)):

        dic1[station[b][0]] = station[b][1]

    def gethtml(geturl):

        cj = cookiejar.LWPCookieJar()

        cookiejarsupport = request.HTTPCookieProcessor(cj)

        opener = request.build_opener(cookiejarsupport,request.HTTPHandler)

        headers = {

            'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36',

            'Host':'www.12306.cn',

            'Referer':'http://www.12306.cn/opn/lcxxcx/init'

        }

        request.install_opener(opener)

        req = request.Request(url=geturl, headers=headers)

        html = request.urlopen(req).read().decode()

        return html

    def getstation(html):

        fromstation = re.compile(r'from_station_name":"(.+?)","').findall(html)

        tostation = re.compile(r'to_station_name":"(.+?)",').findall(html)

        startime = re.compile(r'"start_time":"(.+?)"').findall(html)

        arrtime = re.compile(r'arrive_time":"(.+?)"').findall(html)

        lishi = re.compile(r'"lishi":"(.+?)",').findall(html)

        webbuy = re.compile(r'"canWebBuy":"(.+?)').findall(html)

        startstation = re.compile(r'start_station_name":"(.+?)"').findall(html)

        endstation = re.compile(r'end_station_name":"(.+?)"').findall(html)

        ruanwo = re.compile((r'"rw_num":"(.+?)",')).findall(html)

        ruanzuo = re.compile((r'"rz_num":"(.+?)"')).findall(html)

        yingwo = re.compile(r'"yw_num":"(.+?)"').findall(html)

        ruanzuo = re.compile(r'"rz_num":"(.+?)"').findall(html)

        yingzuo = re.compile(r'"yz_num":"(.+?)"').findall(html)

        wuzuo = re.compile(r'"wz_num":"(.+?)"').findall(html)

        checi = re.compile(r'station_train_code":"(.+?)"').findall(html)

        datanum = re.compile((r'day_difference":"(.+?)"')).findall(html)

        erdengzuo = re.compile(r'ze_num":"(.+?)",').findall(html)

        num = range(0, len(yingwo))

        for i in num:

            try:

                if int(yingzuo[i]) != 0 or int(erdengzuo[i]) != 0 or int(wuzuo[i] !=0): #Z108

                    print(checi[i],'Second-class seat:', erdengzuo[i],'Hard seat:', yingzuo[i],' No seat:',wuzuo[i])

                    if yingwo[i] !='--' or yingzuo[i] !='None':

                        msg=MIMEText('Train:'+fromstation[i]+' ->'+tostation[i] +'('+ checi[i]+')\nSecond-class seat:'+erdengzuo[i]+'张; Hard seat:'+ yingzuo[i]+' Zhang; No seat:'+wuzuo[i]+'Zhang! Buy it soon!\nURL: http://www.12306.cn/opn/lcxxcx/init' )

                        msg['Subject'] ='There are tickets! '

                        msg['From'] = user

                        msg['To'] =','.join(to)

                        s = smtplib.SMTP('smtp.qq.com', timeout = 30) #Connect SMTP port

                        s.login(user,pwd)#Login to the server

                        s.sendmail(user,to,msg.as_string())

                        s.close()

                        print('Send successfully')

                        print('----------------------------------------------- -------------')

            except:

                continue

    print('''''
By:Wang Xiaotao_Classmate 
-------------------------------------------------- ------------ 
    welcome! 
-------------------------------------------------- ------------ 
''')  
print ('Please enter the type of ticket purchase: (0 is adult ticket and the other is student ticket)')  
leixing = input()  
print('Please enter the starting point:')  
qidian = input()  
try:  
    if dic1[qidian]:  
        qidian = dic1[qidian]  
except:  
    print('The starting point is entered incorrectly!')  
print('Please enter the end point:')  
zhongdian = input()  
try:  
    if dic1[zhongdian]:  
        zhongdian = dic1[zhongdian]  
except:  
    print('The end point is entered incorrectly!')  
print('Please enter the year of ticket purchase:')  
year = input()+'-'  
print('Please enter the month of ticket purchase: (2 digits)')  
month = input()+'-'  
print('Please enter the date of purchase: (2 digits)')  
date = input()  
date = year + month + date  


if leixing == 0:  
   geturl ='http://www.12306.cn/opn/lcxxcx/query?purpose_codes=ADULT&queryDate='+date+'&from_station='+qidian+'&to_station='+ zhongdian  
else:  
    geturl ='http://www.12306.cn/opn/lcxxcx/query?purpose_codes=0X00&queryDate='+date+'&from_station='+qidian+'&to_station='+ zhongdian  
while 1:  
    getstation(gethtml(geturl))  
    print('Train ticket monitoring...')  
    time.sleep(300) </pre>

Precautions

01

Students who are interested in Python development technology, welcome to join the communication group below to learn together and discuss with each other.

02

If you don’t understand in the process of learning python, you can join my python zero-base system to learn and exchange Qiuqiu qun: 934109170, to share with you the current talent needs of Python companies and how to learn Python from a zero-base, and what to learn. Related learning video materials and development tools are shared

Alright! The article is shared with the readers here

Finally, if you find it helpful, remember to follow, forward, and favorite

Reference: https://cloud.tencent.com/developer/article/1460791 python learning tutorial, 12306 train ticket grabbing system-Cloud + Community-Tencent Cloud