相信GitHub对于每一个从事开发的人都不会陌生,这里是技术人的乐园,在学校学习实践的时候经常会需要从这里查找相关的项目,遇上很好的或者是感兴趣的项目往往想要下载下来运行体验一番,在这个过程中往往会出现下载失败的问题,这里很大的一部分原因就是网速不稳定以及网速很低的问题,在这里我之前的一篇博客《GitHub网站项目下载速度过慢、下载失败问题成功解决》已经提供了两种亲测可行的解决方案,需要的话可是拿去使用。

想要下载GitHub中的某个项目,最常见的有两种形式:

1、在Git的命令行中使用"git clone 指定项目链接"的方式进行下载

2、就是借助界面的操作,如下图所示,点击红色方框里面的按钮即可下载。

看到这里,不禁想:能不能基于Python实现项目的自动下载呢?当然是木有问题的了

基于Python实现指定项目的下载就是抓取了项目下载的链接之后模拟网络请求就可以了,思想很简单,具体的代码实现如下所示:

def single(username,projectname,path,branch_name='master'):'''单个项目处理模块'''#代理构建header_list=generate_random_UA(num=100)headers={'User-Agent':random.choice(header_list)}ip_proxy=random.choice(ip_list)one_type,one_ip,one_port=ip_proxy[0],ip_proxy[1],ip_proxy[2]proxy={one_type:one_type+'://'+one_ip+':'+one_port}url='https://codeload.github.com/{}/{}/zip/{}'.format(username,projectname,branch_name)filename=path+'/'+projectnamezipfile_name=filename+'.zip'data=Nonetry:data=urllib2.urlopen(url)with open(zipfile_name,'wb') as f:f.write(data.read())with zipfile.ZipFile(zipfile_name, 'r') as f:f.extractall(path+'.')print('geting http://github.com/'+username+'/'+projectname)except (urllib.error.URLError):try:headers['Host']='github.com'request=requests.get('https://github.com/{}/{}'.format(username,projectname),headers=headers,proxies=proxy,timeout=5)response=urllib2.urlopen(request)pattern='/{}/{}/tree/(.*?)/'.format(username,projectname)b_name=re.findall(pattern, str(response.read()))[-1]single(username,projectname,path,b_name)except Exception as e:print('Exception: ',e)pass

参数说明如下,其中:

username:用户名
projectname:项目名
path:保存路径

基于命令的启动形式对于操作来说不是很方便,这里基于GUI实现了简单的界面可以方便地进行使用了,效果图如下所示:

结果数据如下:

Python实现指定GitHub项目下载器【项目下载+GUI可视化界面操作】相关推荐

  1. python破解有道词典加密参数,简单GUI可视化界面操作(2020年5月)

    1. 抓包 2. 分析知道其中4个参数为加密数据,搜索其中一个参数salt 搜索到一个js文件,点击大括号格式化查看 查到4个参数 打断点分析可知道 ts是13位时间戳,salt是时间戳加上一位0到9 ...

  2. Google Earth谷歌地球卫片下载器--可下载全球历史卫星,无偏移、高精度

    Google Earth谷歌地球卫片下载器--可下载全球历史卫星,无偏移.高精度 Google Earth谷歌地球卫片下载器 (build662)升级正式发布,水经注万能地图下载器升级正式发布,水经注 ...

  3. 使用Flickr下载器批量下载Flickr的相册

    相信用过Flickr下载图片的人都知道从Flickr上下载原图的操作有点小麻烦.楼主花了许久时间在网上寻找批量下载工具,一直没找到合适的.于是就自己动手写了个Win10应用:Flickr下载器,功能是 ...

  4. python tkinter下载器_下载小说还要去找网站?Python使用tkinter打造一个小说下载器...

    前言 今天教大家用户Python GUI编程--tkinter 打造一个小说下载器,想看什么小说,就下载什么小说 先看下效果图 Tkinter 是使用 python 进行窗口视窗设计的模块.Tkint ...

  5. Python Tkinter 下载器 多任务下载+多线程下载+多任务断点续存

    功能介绍: 这次的下载器特点:多线程下载 + 多任务下载 + 多任务断点续存 视频演示: Python Tkinter 系列 - 下载器 界面: 轮子 文件大小 界面:Tkinter 下载功能 :re ...

  6. [宅男福利]人人网相册批量下载器(下载红毯照ChinaJoy照神马的最方便了~!)...

    基本上所有的人人网批量下载器我都用过,要么就是被封杀了要么就是难用得要死Bug一堆-- 所以在08的小朋友们毕业走红毯,本宅男一页页翻着校内相册的时候就有写个人人网相册批量下载器的想法了. 现在空下来 ...

  7. 杰理下载器强制下载工具的使用介绍_AC695N696NAD14AD15全系列支持,看完此文就足够了

    目录 一.常见的下载器造型-V2.0版本 二.常见的下载器造型-V4.0版本 三.常见的问题 第1步 ----- 按照接口连接好USB座子 第2步 ----- 插上下载器 第3步 ----- 双击批处 ...

  8. Savieo 万能下载器,下载多达34 站点,包括ins、Facebook

    今天继续安利一个在线下载站点-Savieo ,复制Facebook . Instagram . Vimeo 视频的网址(url),就可以下载,也可以下载Twitch . Twitter .TikTok ...

  9. 自己遇到的 ST-Link 下载器 不能下载的2种情况

    自己使用STlink比较多, 一开始时经常会遇到不能下载的情况,其中一个是因为没给jtag接口的 vtref 供电(使用SWD方式),但是基本都能下载, 很少有不能下载的情况,后来想到了这个原因, 于 ...

  10. 联盛德毕业设计--01 JLink 下载器 无法下载程序问题 解决方法--DAP

    准备用 W601 做一个毕业设计, 现在开始学习 W601.  (解决方法就是换一个DAP下载器,以下纯属扯淡) 学习 W601 第一步应该就是搭建一个开发平台,我这里使用的开发板是正点原子的  W6 ...

最新文章

  1. [图解教程]Axis2与Eclipse整合开发Web Service之二:WSDL逆向生成服务端
  2. 点击文本框搜索,出现在下拉列表中
  3. pycharm+python+bootstrap写一个登陆界面_Python--day56(前后台数据交互、bootstrap)
  4. c或c++语言什么时候用补码来运算,C/C++(基础编码-补码详解)
  5. Android_安卓为按钮控件绑定事件的五种方式
  6. 函数的自执行,变量提升和函数提升
  7. Ubuntu16.04 安装Gitlab
  8. python网络编程需要学什么,python网络编程学习笔记(五):socket的一些补充 Python 网络编程需要学习哪些网络相关的知识...
  9. Eclipse-maven项目不将resources下的文件打到classpath下
  10. “技术驱动创新”正成为企业发展新方向,开发者该如何修炼自己?
  11. Cox比例风险回归模型单因素多因素生存分析
  12. android wifi 抓sniffer log
  13. 在计算机中怎么找到打字的文件,想在电脑上打字,然后把电脑上写的字,弄到纸上怎么做...
  14. JSON的生成和解析
  15. 哪些方法可以用来提高微信小程序的应用速度?
  16. Flannel host-gw 和 vxlan
  17. GPU加速(一)CUDA C编程及GPU基本知识
  18. 【CNN】——矩阵乘法优化
  19. 中小企业信息化(一)——何为信息化
  20. 深度学习(二) 神经网络基础算法推导与实践

热门文章

  1. 聊天室自动滚动效果实现
  2. phpSQLiteAdmin - 基于Web的SQLite数据库管理工具 - OPEN 开发经验库
  3. Windows数据类型
  4. iOS 6 SDK: 在应用内展示App Store
  5. PHP实现手机归属地查询API接口
  6. 通过SQL Server命令行启动及停止SQL服务的方法
  7. CCIELAB之路由重分布之单点双向重分布的汇总路由反馈
  8. 51nod 1268最大距离
  9. 【redis】spring boot利用redis的Keyspace Notifications实现消息通知
  10. 2016-2017-2 20155309 南皓芯《java程序设计》第八周学习总结