本文转载自以下链接:https://github.com/Light-City/AutoDownloadWhl
源码地址:
本次脚本我将它命名为:Whl自助搜索下载器
实现了如下功能:
- 支持检索
- 支持查找
- 支持下载
- 单、多文件下载
2.如何使用及功能演示
2.1 如何使用
运行脚本需要:
- requests、lxml、os库
- curl或axel命令
win系统的直接下载win版本的按照网上配置即可!
linux系统与mac系统可用yum 或 apt 或 brew等来进行安装!
复制源码地址并下载脚本,运行脚本即可:
python AutoDownloadWhl.py
2.2 功能演示
- 所有包信息展示
- 适应平台whl包
- 多包下载
3.代码详解
3.1 封装
封装包地址与下载地址:
class AutoDownWhl():
def __init__(self):
# 包地址
self.url = 'https://www.lfd.uci.edu/~gohlke/pythonlibs/'
# 下载地址
self.base_url = 'https://download.lfd.uci.edu/pythonlibs/r5uhg2lo/'
# 模拟浏览器
self.headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36'
}
3.2 获取选择器与包名
解析源码与获取包名:
# 获取选择器与包名
def getLib(self):
raw_text = requests.get(self.url, headers=self.headers).content
seletor = etree.HTML(raw_text)
lib_names = seletor.xpath('//ul[@class="pylibs"]//li//strong//text()')
return seletor, lib_names
3.3 输出所有包名
一行15个包名打印:
# 输出所有包名
def print_AllLib(self, lib_names):
print('
------------------共查找到' + str(len(lib_names)) + '个包------------------
')
for i in range(len(lib_names)):
if i and i % 15 == 0:
print('
')
print(lib_names[i], end=' ')
3.4 搜索与下载
只摘取了核心代码,下载采用调用系统命令curl与axel,请在自己的系统上安装这两个其中之一下载!
def searchDown(self, downloadMethod='axel'):
# 此部分代码只摘取核心部分
if int(lib_sequence) <= max:
detail_name = detail_libs[int(lib_sequence) - 1].strip().replace('‑', '-')
download_url = self.base_url + detail_name
print('
输入包名正确,下载地址:' + download_url + '
')
print("---------------------------------------开始下载---------------------------------------
")
if downloadMethod == 'curl':
cmd = 'curl -O %s' % download_url
else:
cmd = 'axel %s' % download_url
while True:
cmd_res = os.system(cmd)
if cmd_res == 0:
print('下载成功!
')
break
else:
print('下载失败!
')
is_try = input('是否重试下载(y|n): ')
if is_try == 'y' or is_try == 'Y':
continue
else:
break
else:
print("