Python 12306 기차표 강탈 시스템 실현
구체 적 인 코드 는 다음 과 같다.
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 = '' #
pwd = ''#
to = [''] #
with open('D:\Python \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], ' :', erdengzuo[i], ' :', yingzuo[i],' :',wuzuo[i])
if yingwo[i] != '--' or yingzuo[i] != ' ':
msg=MIMEText(' :'+fromstation[i]+' ->'+tostation[i] +'('+ checi[i]+ ')
:'+erdengzuo[i]+ ' ; :'+ yingzuo[i]+' ; :'+wuzuo[i]+ ' ! !
:http://www.12306.cn/opn/lcxxcx/init')
msg['Subject'] = ' !'
msg['From'] = user
msg['To'] = ','.join(to)
s = smtplib.SMTP('smtp.qq.com', timeout = 30) # SMTP
s.login(user,pwd)#
s.sendmail(user,to,msg.as_string())
s.close()
print(' ')
print('------------------------------------------------------------')
except:
continue
print('''''
By: _ W
--------------------------------------------------------------
!
--------------------------------------------------------------
''')
print (' :(0 ) ')
leixing = input()
print(' :')
qidian = input()
try:
if dic1[qidian]:
qidian = dic1[qidian]
except:
print(' !')
print(' :')
zhongdian = input()
try:
if dic1[zhongdian]:
zhongdian = dic1[zhongdian]
except:
print(' !')
print(' :')
year = input()+'-'
print(' :(2 )')
month = input()+'-'
print(' :(2 )')
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(' ...')
time.sleep(300) </pre>
총결산위 에서 말 한 것 은 소 편 이 소개 한 Python 이 12306 기차표 강탈 시스템 을 실현 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.