本文转载自以下链接:https://github.com/Light-City/AutoDownloadWhl

源码地址:

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('\n------------------共查找到' + str(len(lib_names)) + '个包------------------\n')
for i in range(len(lib_names)):
if i and i % 15 == 0:
print('\n')
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('\n\n输入包名正确,下载地址:' + download_url + '\n')
print("---------------------------------------开始下载---------------------------------------\n")
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('下载成功!\n')
break
else:
print('下载失败!\n')
is_try = input('是否重试下载(y|n): ')
if is_try == 'y' or is_try == 'Y':
continue
else:
break
else:
print("\n \033[1;31m 输入序号不符合要求,请重新输入! \033[0m \n")

3.5 调用

采用axel下载:

dw = AutoDownWhl()
dw.searchDown(downloadMethod='axel') 实际运行效果显示:
因为下载使用的windows系统版本的axel命令无法访问https,
(使用axel命令下载报错,错误原因是Unable to connect to server download.lfd.uci.edu:80。使用浏览器直接访问download.lfd.uci.edu报错,但是通过查看包的下载地址,地址开头是https,使用https://www.lfd.uci.edu/就能访问该网站,而http://www.lfd.uci.edu/却无法访问。)
所以使用curl命令,修改最后一行:dw.searchDown(downloadMethod='curl')  (前提是需要把curl命令添加到系统环境变量里)

执行python AutoDownloadWhl.py
首先会列出当前搜索到的所有whl包,接下来输入下载包的名字(英文逗号分割),然后会按照顺序,挨个查找下载包,根据python版本的不同,输入需要下载的包序号,会出现该包的下载地址。
然后curl就开始下载包了,下载的包会保存到当前目录。 或者只获取包的下载地址,使用迅雷下载 完整的下载演示如下所示:
C:\Users\sandu\Anaconda3\envs\Network\python.exe D:/scrapyseleniumtest/AutoDownloadWhl.py

---------------------------------------欢迎使用Whl自助搜索下载器---------------------------------------

------------------共查找到476个包------------------

AD3 Aggdraw Aiohttp Akima APSW Arctic Aspell-python Assimulo Astropy Atom AutoPy Babel Backports.lzma Basemap Bazaar 

Bcolz Bigfloat Bintrees Bio_formats Biopython Bitarray Blaze Blist Blosc Blz Boost.Python Bottleneck Brotli brotlipy Bsddb3 

Bsdiff4 BTrees Cairocffi Cantera Carray Cartopy Casuarius cChardet Cdecimal CellCognition CellProfiler Centrosome ceODBC Cf-units Cffi 

Cftime CGAL-bindings Cgkit Chaco Chebyfit Cheetah Chompack CLD Cmapfile cmarkgfm COBRA Coverage Crc16 Crcmod Cupy 

Curses CVXcanon CVXOPT CVXPY cx_Freeze cx_Oracle Cyassimp Cyordereddict Cyrasterize Cython Cytoolz Czifile Daal4py Datrie Debug-information-files 

Delny Dipy Discretize Dnacurve Dulwich DyND ECOS Enable Enaml Entropy ETS FabIO Fann2 Fast-histogram Fastcache 

Fastparquet Fastrlock fastText fastTSNE Faulthandler Fcsfiles Fdint Ffnet Fiona Fisher Fisx FLANN Fmkr Fpzip FreeImageDLL 

FreeSASA Friture GDAL Genshi Gensim Gevent Glumpy GMPY GPy GR Grako Greenlet gRPCio GuiQwt Gvar 

H5py HDDM Heatmap Hmmlearn HoloPy HTSeq HyperSpy Ilastik Imagecodecs ImageD11 Iminuit Imread Imreg Indexed_gzip Intbitset 

IOCBio Iris Javabridge JCC JPype Jsonlib Jupyter Kapteyn Kivy Kiwisolver Kwant La Lazy_object_proxy Lazyflow Lfdfiles 

LibLAS LIBLINEAR Libpython libSBML LIBSVM Libtfr Libxml-python Lightning Line_profiler Llist Llvmlite LLVMPy Logbook Louvain-igraph lp_solve 

Lru_dict Lsqfit Lucam Lxml Lz4 Mahotas Marisa-trie MarkupSafe Mathutils Matplotlib Mayavi Menpo Mercurial MeshPy Milk 

Minepy Mistune MKL-service MKL_fft MKL_random Mlpy mmLib MMTK Mod_wsgi ModernGL Molmass Mpi4py Mplcairo Msgpack Multidict 

MultiNEAT Multiprocess mxBase MySQL-python Mysqlclient Natgrid NDimage NetCDF4 Netifaces Netpbmfile NIPY NiTime NLopt nMOLDYN Noise 

Numba Numcodecs Numexpr NumPy Numpy-quaternion numpy-stl ObsPy ODE Oiffile Open3D OpenBabel OpenCV OpenEXR OpenImageIO OpenPIV 

openTSNE Orange Osqp Oursql Pandas Param Peewee Pendulum Persistent Pgmagick Pillow Pillow-SIMD Pip Planar Pocketsphinx 

Polygon Polylearn Polymode PostgresAdapter Protobuf Psf Psutil Psycopg PuLP Py-earth Py-fcm Py-lmdb Py2exe Py_gd PyAlembic 

PyAMF PyAMG PyArrow Pyasn PyAudio PyBluez PyBox2D Pycairo Pycares PyCifRW PyCLD2 PyCluster PyCogent PyCorrFit Pycosat 

PyCryptoSat PyCUDA PycURL Pycvodes PyDbg PyDDE PyEDA PyEMD PyEphem Pyexiv2 PyFFTW PyFITS pyFLTK PyFlux pyFM 

PyFMI Pygame Pygit2 PyGraphviz PyGreSQL PyGTK PyHDF PyHook Pyhull PyICU PyISAPIe PyJNIus Pykinsol PyKSVD Pyldap 

PyLibDeconv PyLibTiff PyLZMA Pymatgen PyMC PyMca PyMCMC PyMCubes PyMedia PyMetis PyMinuit PyMix PyMOL Pymongo Pymssql 

Pymunk Pymutt PyMVPA PyODBC Pyodeint PyOpenCL PyOpenGL Pypmc Pyproj PyQPBO PyQt4 PyQwt Pyropes Pyrsistent pyRXP 

PySFML PySide pySLALIB PySparse Pyspharm Pysqlite PyStemmer PyStruct Pyswisseph PyTables Python-cjson Python-geohash Python-igraph Python-ldap Python-Levenshtein 

Python-lzf Python-LZO Python-snappy Python-sundials PythonMagick PythonNET Pytiff PyTorch PyTST PyUSB-FTDI PyViennaCL PyVRML97 PyWavelets PyWCS PyWin32 

PyWinHook Pywinpty PyX PyXML PyYAML PyZMQ Pyzopfli Qdafile Qimage2ndarray Qt_graph_helpers QuantLib QuickFIX QuTiP Rapidjson Rasterio 

Re2 Recordclass Regex ReportLab Rpy2 Rtmidi-python Rtree Ruamel.yaml Salientdetect Sasl Scandir ScientificPython Scikit-cycling Scikit-fmm Scikit-image 

Scikit-learn Scikit-misc Scikit-umfpack Scikits.ann Scikits.audiolab Scikits.delaunay Scikits.hydroclimpy Scikits.odes Scikits.samplerate Scikits.scattpy Scikits.timeseries Scikits.vectorplot Scimath SciPy Scipy-cluster 

SCS Sdtfile SendKeys Seqlearn Setproctitle SfePy Shapely SilverCity Sima Simpleaudio SimpleITK Simplejson SimpleParse Slycot Sounddevice 

spaCy Sparsesvd Spectrum Spglib SQLAlchemy Statsmodels STEPS Stratify Swiglpk Sympy TA-Lib TatSu TensorFlow Thrift ThriftPy 

Tifffile Tinyarray Tomopy Tornado Traits Transformations Triangle Trollius TWAINmodule Twisted typed_ast Uciwebauth UDUNITS Ujson Umysql 

Veusz VideoCapture Vidsrc VIGRA ViTables VPython VTK Winrandom Wordcloud Wrapt Wrf_python wxPython x86cpu Xgboost Xxhash 

XYlib-py Yappi Yarl Yt Zfec Zipline Zodbpickle Zope.interface Zs Zstd Misc 

请输入下载包的名字(英文逗号分割): SQLAlchemy

---------查找SQLAlchemy成功,正在输出包的详细信息---------

(1)SQLAlchemy‑1.2.18‑cp27‑cp27m‑win32.whl
(2)SQLAlchemy‑1.2.18‑cp27‑cp27m‑win_amd64.whl
(3)SQLAlchemy‑1.2.18‑cp35‑cp35m‑win32.whl
(4)SQLAlchemy‑1.2.18‑cp35‑cp35m‑win_amd64.whl
(5)SQLAlchemy‑1.2.18‑cp36‑cp36m‑win32.whl
(6)SQLAlchemy‑1.2.18‑cp36‑cp36m‑win_amd64.whl
(7)SQLAlchemy‑1.2.18‑cp37‑cp37m‑win32.whl
(8)SQLAlchemy‑1.2.18‑cp37‑cp37m‑win_amd64.whl 请输入下载的包名序号: 8 输入包名正确,下载地址:https://download.lfd.uci.edu/pythonlibs/r5uhg2lo/SQLAlchemy-1.2.18-cp37-cp37m-win_amd64.whl ---------------------------------------开始下载--------------------------------------- curl -O https://download.lfd.uci.edu/pythonlibs/r5uhg2lo/SQLAlchemy-1.2.18-cp37-cp37m-win_amd64.whl
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1087k 100 1087k 0 0 39631 0 0:00:28 0:00:28 --:--:-- 45299
下载成功! 是否继续下载其他库(y|n): n ---------------------------------------感谢使用---------------------------------------

修改后使用curl命令下载的代码地址:

https://files.cnblogs.com/files/sanduzxcvbnm/AutoDownloadWhl-master.7z

 

Whl自助搜索下载器的更多相关文章

  1. .NET破解之图片下载器

    自去年五月加入吾爱后,学习了三个月,对逆向破解产生了深厚的兴趣,尤其是对.NET方面的分析:但由于这一年,项目比较忙,事情比较多,破解这方面又停滞了许久,不知道还要好久. 前些天,帮忙批量下载QQ相册 ...

  2. .NET破解之太乐地图下载器【非暴破】

    不知不觉,接触破解逆向已经三个月了,从当初的门外汉到现在的小白,这个过程只有经历过才知道其中的苦与乐: 有无知.困惑.痛苦.惊喜.彻悟.欣慰…… 有无助的软件脱壳,茫然的代码分析,有无趣的反复测试, ...

  3. 【图文详解】python爬虫实战——5分钟做个图片自动下载器

    python爬虫实战——图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识,(没看的先去看!!)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap sho ...

  4. Python实战:美女图片下载器,海量图片任你下载

    Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...

  5. 在firefox的flashgot中配置各种下载器

    一.在firefox中安装flashgot下载管理器 flashgot是firefox的一个扩展,在联网的情况下,可以在firefox中的附加组件中搜索flashgot,然后安装. 二.在flashg ...

  6. python爬虫实战——5分钟做个图片自动下载器

      python爬虫实战——图片自动下载器 制作爬虫的基本步骤 顺便通过这个小例子,可以掌握一些有关制作爬虫的基本的步骤. 一般来说,制作一个爬虫需要分以下几个步骤: 分析需求(对,需求分析非常重要, ...

  7. 网站下载器WebZip、Httrack及AWWWB.COM网站克隆器

     动机 闲扯节点,可略读. 下载并试用这些软件并非是为了一己之私,模仿他人网站以图利.鉴于国内网络环境之艰苦,我等屌丝级半罐水程序员,纵有百度如诸葛大神万般协力相助,也似后主般无能不能解决工作和娱乐中 ...

  8. IDM下载器使用方法详解:百度网盘下载,视频会员一网打尽!

    一. IDM的设置 [01]IDM插件与各大浏览器的集成 默认情况下,在成功安装IDM后,直接点击这里的选项,会弹出[常规设置],一般情况下直接保持默认的配置即可,如果你使用的是比较小众的浏览器,你可 ...

  9. python动态视频下载器

    这里向大家分享一下python爬虫的一些应用,主要是用爬虫配合简单的GUI界面实现视频,音乐和小说的下载器.今天就先介绍如何实现一个动态视频下载器. 爬取电影天堂视频 首先介绍的是python爬取电影 ...

随机推荐

  1. web的自己主动化公布

    </pre>基于眼下业务的版本号.使用的maven 及tomcat <p></p><p>假设我们使用 Jenkins 公布是比較好的,可是存在一定的问题 ...

  2. R环境中的工作空间(workspace)

    工作空间(workspace)就是当前R的工作环境,它储存着全部用户定义的对象(向量.矩阵.函数.数据框.列表) . 在一个R会话结束时,你能够将当前工作空间保存到一个镜像中.并在下次启动R时自己主动 ...

  3. Android开发:setAlpha()方法

    paint.setAlpha() 即透明度.其取值范围是0---255,数值越小,越透明,颜色上表现越淡. 实际上当设成10以下就会有透明的效果了.

  4. restrict关键字

    值得注意的是,一旦你决定使用restrict来修饰指针,你必须得保证它们之间不会互相重叠,编译器不会替你检查. 关键字restrict有两个读者.一个是编译器,它告诉编译器可以自由地做一些有关优化的假 ...

  5. allonsy

    时间限制 1s 空间限制 512MB 2.1 题目描述 "Allons-y!" 时间还算足够,好好看看题吧. 有一种说法,时间线是扭曲的,会相互交织.(一般在科幻片里比较流行?) ...

  6. unsigned 赋值负数输出情况 & printf输出格式

    %d 有符号10进制整数 %ld 长整型 %hd短整型 %i 有符号10进制整数 %o 无符号8进制整数 %u 无符号10进制整数 %x 无符号的16进制数字,并以小写abcdef表示 %X 无符号的 ...

  7. 直接使用FileSystem以标准输出格式显示hadoop文件系统中的文件

    package com.yoyosys.cebbank.bdap.service.mr; import java.io.IOException; import java.io.InputStream; ...

  8. Java的Thread.currentThread().getName() 和 this.getName() 以及 对象.getName()区别???

    最近在看Java多线程这本书,但是发现里面有个概念自己搞不清楚.就是Thread.currentThread().getName() 和 this.getName() 以及 对象.getName()区 ...

  9. python自动化测试学习笔记-5常用模块

    上一次学习了os模块,sys模块,json模块,random模块,string模块,time模块,hashlib模块,今天继续学习以下的常用模块: 1.datetime模块 2.pymysql模块(3 ...

  10. Razor的使用

    Razor可以识别尖括号,且关键词是@,默认情况下会对输出的html代码进行转义 1.C#代码 用 @ 加 中括号 包起来 @{ ; i < ; i++) { <h3>C#语句块要用 ...