# 增加搜索功能
import re
import urllib.request
import json
def InsertDict(D, key, value):
D.setdefault(key)
D[key] = value
def GetHtml(url):
response = urllib.request.urlopen(url)
text = response.read().decode('gbk')
return text
def GetDict(s, D1):
for i in range(len(s)):
s0 = s[i].split('(')
s1 = s0[0]
s2 = s0[1].replace(')', '')
InsertDict(D1, s1, s2)
def GetCitycode(original_city, D):
for k in D:
if original_city == k:
return D[k]
else:
pass
def UrlJoin(original_city_code, target_city_code, t):
return 'http://flights.ctrip.com/domestic/ajax/Get90DaysLowestPrice?dcity=%s&acity=%s&ddate=%s&searchType=S&r=0.18035678380179632' % (original_city_code, target_city_code, t)
def GetLowestprice(lowerprice_html, D2):
data = json.loads(lowerprice_html)
L = re.findall(r'[0-9]{4}\-[0-9]{2}\-[0-9]{2}', lowerprice_html)
L1 = re.findall(r'\d{3,4}', lowerprice_html)
L2 = []
min = 1500
for i in range(len(L1)):
if int(L1[i]) == 2017 or int(L1[i]) == 2018:
pass
else:
L2.append(L1[i])
# print(L2)
for i in range(len(L)):
InsertDict(D2, L[i], L2[i])
for k in D2:
if int(D2[k]) < int(min):
min = D2[k]
if D2[k] == min:
print('最低票价为: %s 日期为: %s' %(D2[k], k))
# print(k)
return k
if __name__ == '__main__':
D1 = {}
D2 = {}
get_citycode_url = 'http://webresource.c-ctrip.com/code/cquery/resource/address/flight/flight_new_poi_gb2312.js?releaseno=?CR_2016_03_07_22_18_26'
citycode_html = GetHtml(get_citycode_url)
s = re.findall(r'[\u4e00-\u9fa5]+\([A-Z]+\)', citycode_html)
GetDict(s, D1)
original_city = input('请输入出发地:')
target_city = input('请输入目的地:')
t = input('请输入时间:')
original_city_code = GetCitycode(original_city, D1)
target_city_code = GetCitycode(target_city, D1)
get_lowerprice_url = UrlJoin(original_city_code, target_city_code, t)
print(get_lowerprice_url)
lowerprice_html = GetHtml(get_lowerprice_url)
k = GetLowestprice(lowerprice_html, D2)
target_url = 'http://flights.ctrip.com/booking/%s-%s-day-1.html?DDate1=%s' % (original_city_code, target_city_code, k)
print(target_url)
兄弟连学python
Python学习交流、资源共享群:563626388 QQ