爬取12306車次信息
阿新 • • 發佈:2017-11-19
https pen __main__ 很多 ref ont ticket ica win
#!/usr/bin/python2.7 # -*- coding:utf-8 -*- # 2017-10-19 """ 12306 搶票 網頁分析 - 查看網頁源碼 - 判斷是否通過異步加載或者框架的形式接收並展示數據 - 數據加密過,然後前端再通過js解密並展示(即js混淆) urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)> 證書作用:保證數據在傳輸的過程中不會被篡改或截取 """ import sys reload(sys) sys.setdefaultencoding(‘utf8‘) import ssl import json import urllib2 # 跳過證書驗證 ssl._create_default_https_context = ssl._create_unverified_context headers = { ‘Referer‘:‘https://kyfw.12306.cn/otn/leftTicket/init‘, ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36‘ } def getTrainList(): url = "https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2017-10-20&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=CDW&purpose_codes=ADULT" req = urllib2.Request(url) req.headers = headers html = urllib2.urlopen(req).read() res = json.loads(html) return res[‘data‘][‘result‘] if __name__ == ‘__main__‘: c = 0 for i in getTrainList(): tmp_list = i.split(‘|‘) # print "%s\t%s\t%s" % (tmp_list[13],tmp_list[23],tmp_list[3]) if tmp_list[23] == u‘有‘: print "時間:%s 車次:%s 軟臥有很多票..." % (tmp_list[13],tmp_list[3]) elif tmp_list[23] == u‘無‘ or not tmp_list[23]: print "時間:%s 車次:%s 軟臥無票..." % (tmp_list[13],tmp_list[3]) elif int(tmp_list[23]) > 0: print "時間:%s 車次:%s 軟臥有 %s 張票" % (tmp_list[13],tmp_list[3],tmp_list[23]) else: print "時間:%s 車次:%s 軟臥無票..." % (tmp_list[13], tmp_list[3])
爬取12306車次信息