发布php做的网站,商务网站建设联系方式,杭州清风室内设计培训学校,网页设计与制作基础知识总结自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501
得到了请求地址与请求参数后#xff0c;可以发现请求参数中的出发地与目的地均为车站名的英文缩写。而这个英文缩写的字母是通过输入中文车站名转换…自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501
得到了请求地址与请求参数后可以发现请求参数中的出发地与目的地均为车站名的英文缩写。而这个英文缩写的字母是通过输入中文车站名转换而来的所以需要在网页中仔细查找是否有将车站名自动转换为英文缩写的请求信息具体步骤如下
1关闭并重新打开网络监视器然后按下快捷键F5进行余票查询网页的刷新此时在网络监视器中选择类型为js的网络请求。在文件类型中仔细分析文件内容是否有与车站名相关的信息如图30所示。 图30 找到与车站名相关信息
说明在分析信息位置时查询按钮仅仅实现了发送查票的网络请求而并没有发现将文字转换为车站名缩写的相关处理此时可以判断在进入余票查询页面时就已经得到了将车站名转换为英文缩写的相关信息所以可以刷新页面查看网络监视器中的网络请求。
2选中与车站名相关的网络请求在请求细节中找到该请求的完整地址。然后在网页中打开该地址测试返回数据如图31所示。 图31 返回车站名英文缩写信息
说明看到返回的车站名信息此时可以确认根据该信息可以进行车站名汉字与对应的英文缩写进行转换。例如可以在该条信息中找到北京对应的是BJP。由于该条信息并没有自动转换的功能所以需要将该信息以文件的方式保存在项目中。当需要转换时在文件中查找对应的英文缩写即可。
3打开PyCharm开发工具在check tickets目录中右键菜单依次选择New → Python File创建一个名称为get_stations.py文件然后在菜单栏中依次选择File → Default Settings再参考14.4.2小节中的步骤4、步骤5安装requests模块即可。
4在get_stations.py文件中分别导入requests模块、re模块及os模块然后创建getStation()方法该方法用于发送获取地址信息的网络请求并将返回的数据转换为需要的类型。关键代码如下
def getStation(): # 发送请求获取所有车站名称通过输入的站名转换为查询地址的参数 url https://kyfw.12306.cn/otn/resources/js/framework/ station_name.js?station_version1.9050 response requests.get(url, verifyTrue) # 请求并进行验证 # 获取需要的车站名称 stations re.findall(([\u4e00-\u9fa5])\|([A-Z]), response.text) stations dict((stations)) # 转换为字典类型 stations str(stations) # 转换为字符串类型否则无法写入文件 write(stations) # 调用写入方法 说明requests模块为第三方模块该模块主要用于处理网络请求re模块为Python自带的模块主要通过正则表达式匹配并处理相应的字符串os模块为Python自带的模块主要用于判断某个路径下的某个文件。 注意随着12306官方网站的更新请求地址会发生改变要以当时获取的地址为准。
5分别创建write()方法、read()方法及isStations()方法分别用于写入文件、读取文件以及判断车站文件是否存在代码如下
def write(stations): file open(stations.text, w, encodingutf_8_sig) # 以写模式打开文件 file.write(stations) # 写入文件 file.close()
def read(): file open(stations.text, r, encodingutf_8_sig) # 以写模式打开文件 data file.readline() # 读取文件 file.close() return data
defisStations(): isStations os.path.exists(stations.text) # 判断车站文件是否存在 return isStations
6打开window.py文件首先导入get_stations文件下的所有方法然后在模拟python的程序入口处修改代码。接下来判断是否存在所有车站信息的文件如果没有该文件就下载车站信息的文件然后显示窗体如果存在将直接显示窗体即可。修改后代码如下
from get_stations import * # 导入get_stations文件下的所有方法 if __name__ __main__: ifisStations() False: # 判断是否存在所有车站的文件没有就下载有就直接显示窗体 getStation() # 下载所有车站文件 show_MainWindow() # 调用显示窗体的方法 else: show_MainWindow() # 调用显示窗体的方法
7在window.py文件下单击右键菜单中选择“Run window”菜单运行主窗体主窗体界面显示后在check tickets目录下将自动下载stations.text文件如图32所示通过该文件可以实现车站名称与对应的英文缩写进行转换。 图32 下载stations.text文件