|
本帖最后由 1531916156 于 2022-7-22 16:53 编辑
首先说明这个程序是在本论坛的航行资料区的链接下载航图,如果论坛不允许用脚本下载的行为,还请管理员删一下贴
————————————————————分割线——————————————————————
这是我想下载航图时,又懒得1个1个点去下载,才有的灵感做的这么一个程序。
凭借我对python一知半解,还勉强能跑...(至于代码可读性简洁性嘛...
为了解放大家的双手/doge
我也发到论坛上给大家试用一下
成果:
下载(因为文件不大,所以大家忍一下百度网盘,主要是论坛传不上来文件):
链接:https://pan.baidu.com/s/16UydO_3f2MhQC9MSFcraXQ?pwd=1nul
提取码:1nul
————————————————————分割线——————————————————————
注意:
- 有两个版本,一个是“常用版”,一个是“全部版”。区别如下:常用版只下载尾号为1、2、7、9、10、20的航图,内容分别为机场图、机位图、离场图、进场图、进近图(我平时基本只用到这些就够了,也有可能是我太胡了瞎飞);全部版则下载此机场所有航图,但速度会慢一点。
- 如果遇到被杀软拦截可以把程序加到排除名单(白名单)里,本人承诺此程序绝对没有任何上传用户信息或破坏用户电脑的代码(源码会放在下面)。
- 为了防止对服务器访问太频繁我专门设置了每次下载后等待0.1s,所以下载速度不会太快,还请大家不要着急,下载完了之后会有提示。
- 在程序同一级目录里会生成以机场ICAO代码命名的文件夹,航图就在里面。
————————————————————源码———————————————————————
常用版
- # coding: UTF-8
- import os
- import urllib.request as req
- import time
- def save_file(file, filename):
- dirt = filename[0:4]
- try:
- os.mkdir(f'{dirt}')
- except FileExistsError:
- pass
- f = open(f'{dirt}\\{filename}.pdf', 'wb')
- f.write(file)
- f.close()
- def download_file(filename):
- dirt = filename[0:4]
- request = req.urlopen(f'https://aip.sinofsx.com/pdf/2022%20Nr.07/AD/{dirt}/{filename}.pdf')
- get = request.read()
- return get
- if __name__ == '__main__':
- air = input('请输入机场ICAO码(不要输错,否则程序会退出):').upper()
- alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N']
- num = [1, 2, 7, 9, 10, 20]
- print('\n正在下载航图,大约需要20秒钟...')
- for i in num:
- if i == 1:
- try:
- answer = download_file(f'{air}-1A')
- save_file(answer, f'{air}-1A')
- except:
- answer = download_file(f'{air}-1')
- save_file(answer, f'{air}-1')
- time.sleep(0.1)
- elif i == 2:
- try:
- answer = download_file(f'{air}-2A')
- save_file(answer, f'{air}-2A')
- except:
- answer = download_file(f'{air}-2')
- save_file(answer, f'{air}-2')
- time.sleep(0.1)
- else:
- for j in alphabet:
- inum = str(i)
- try:
- answer = download_file(f'{air}-{i}{j}')
- save_file(answer, f'{air}-{i}{j}')
- except:
- time.sleep(0.1)
- continue
- time.sleep(0.1)
- input('\n\n下载已完成,按回车退出')
复制代码
全部版
- # coding: UTF-8
- import time
- import os
- import urllib
- import urllib.request as req
- def save_file(file, filename):
- dirt = filename[0:4]
- try:
- os.mkdir(f'{dirt}')
- except FileExistsError:
- pass
- f = open(f'{dirt}\\{filename}.pdf', 'wb')
- f.write(file)
- f.close()
- def download_file(filename):
- dirt = filename[0:4]
- request = req.urlopen(f'https://aip.sinofsx.com/pdf/2022%20Nr.07/AD/{dirt}/{filename}.pdf')
- get = request.read()
- return get
- if __name__ == '__main__':
- air = input('请输入机场ICAO码(不要输错,否则程序会退出):').upper()
- alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N']
- num = [1, 2, 4, 5, 6, 7, 9, 10, 20]
- print('\n正在下载航图,大约需要30~50秒...')
- answer = download_file(f'{air}')
- save_file(answer, f'{air}')
- for i in num:
- for j in alphabet:
- inum = str(i)
- try:
- answer = download_file(f'{air}-{i}{j}')
- save_file(answer, f'{air}-{i}{j}')
- except:
- time.sleep(0.1)
- continue
- time.sleep(0.1)
- input('\n\n下载已完成,按回车退出')
复制代码
欢迎大佬们批评指正,我正在努力进一步学习python !
|
|