[Python] 60行代码GitHub项目多线程批量下载爬虫
作者:CC下载站 日期:2020-06-24 00:00:00 浏览:51 分类:编程开发
输入关键词及页数,然后开启多线程下载,保存到代码目录下的gitdown,文件命名为项目名
#-*-coding:utf-8-*- """ ------------------------------------------------- @Author:Lan @Blog:www.lanol.cn @Date:2020/6/24 @Description:GitHub搜索关键词批量下载 ------------------------------------------------- """ importos importthreading fromparselimportSelector fromrequestsimportget #基础URL,因为后面有很多重复的,所以到时候就直接拼接 baseurl='https://github.com' #请求头,用来反反爬 headers={ 'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/83.0.4103.116Safari/537.36', } #获取项目链接 defget_url(p,q): #拼接URL,这里是搜索的URL #p是页码,q是关键词 url=f'{baseurl}/search?p={p}&q={q}&type=Repositories' #获取搜索结果的html源码,并保存为text给response response=get(url=url,headers=headers).text #将response转成可以进行Xpath的东西 response=Selector(response) #列表生成式:因为url有很多个,所以直接这样子就可以自动加到一个列表 result_urls=[nealfornealin response.xpath("//div[@class='f4text-normal']/a[@class='v-align-middle'][email protected]").extract()] #返回结果URL returnresult_urls #开启下载 defdown(url,name): #判断文件夹是否存在,如果不存在则创建 ifnotos.path.exists('gitdown'): os.makedirs('gitdown') #输出目前进度 print(f'正在下载{name}') #打开这个文件,为写入字节(wb)的方式 withopen(f'gitdown/{name[:10]}.zip','wb')asf: #写入获取到的content f.write(get(url=url,headers=headers).content) #输出目前进度 print(f'下载{name}结束') #获取下载链接,并多线程下载 defget_downurl(urls): #因为GitHub有一个规律就是下载链接都是项目名然后放到https://github.com/{项目名}/archive/master.zip,然后就传给下载的def开启线程下载 forindex,iinenumerate(urls): i=threading.Thread(target=down,args=(f'{baseurl}/{i}/archive/master.zip',i.replace('/','-')[1:])) i.start() if__name__=='__main__': #获取用户需求数据 keyword=input("请输入要下载的关键词: >>>") nums=input("请输入要下载的页数: >>>") #循环调用获取url foriinrange(int(nums)): #传入关键字和页码 urls=get_url(i,keyword) get_downurl(urls)
猜你还喜欢
- 03-29 [编程相关] Winform窗体圆角以及描边完美解决方案
- 03-29 [前端问题] has been blocked by CORS policy跨域问题解决
- 03-29 [编程相关] GitHub Actions 入门教程
- 03-29 [编程探讨] CSS Grid 网格布局教程
- 10-12 [编程相关] python实现文件夹所有文件编码从GBK转为UTF8
- 10-11 [编程算法] opencv之霍夫变换:圆
- 10-11 [编程算法] OpenCV Camshift算法+目标跟踪源码
- 10-11 [Python] python 创建 Telnet 客户端
- 10-11 [编程相关] Python 基于 Yolov8 + CPU 实现物体检测
- 03-15 [脚本工具] 使用go语言开发自动化脚本 - 一键定场、抢购、预约、捡漏
- 01-08 [编程技术] 秒杀面试官系列 - Redis zset底层是怎么实现的
- 01-05 [编程技术] 《Redis设计与实现》pdf
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[跨境电商] TikTok中视频课程30天线上陪跑
[电影] [摩登笑探 冇面俾].1995.HDTV1080i.国语中字
[电影] 非常偵探/The Private Eye Blues 1994
[摄影] 让手机秒变单反的手机拍摄好物
[电影](香港怀旧老电影)《情义我心知》1989.VCDRip.MKV[粤语双字]
[电影] [五个堕落的男女][HD-MKV/1.88G][国语中字][1080P]
[游戏娱乐] 《赤痕:夜之仪式》v1.50中文版
[游戏娱乐] 《极乐迪斯科》v20230509导演剪辑版
[电影] 2023年美国剧情片《包围》BD中英双字
[课程] 张景明教授《一病一讲·100集》
[资料] [大学期末救急课] 猴博士+高斯课堂+斐多课堂,全集视频合集
[云资源] 价值2万元的老男孩Python教程
[书库] 史上最全摄影书推荐(附700本PDF版打包下载)
[云资源] 花了一千多元买的私人健身教程
[下载工具] Internet Download Manager 6.42.7 (IDM)
[影视] 灌篮高手 WEB-DL版下载/Slam Dunk/スラムダンク/灌篮高手:THE FIRST/灌篮高手电影版 2022 The First Slam Dunk 61.35G
[资料] 3000 套电影电视剧 LOGO 宣传片常用音效合集包
[安卓软件] 酷我音乐APP_v10.7.6.4 去广告破解豪华VIP版
[即时通讯] 微信PC版WeChat 3.9.9.43 多开防撤回绿色版
[安卓软件] Solid Explorer文件管理器APP 2.8.38 破解版
[云资源] 价值2万元的老男孩Python教程
[影视] 灌篮高手 WEB-DL版下载/Slam Dunk/スラムダンク/灌篮高手:THE FIRST/灌篮高手电影版 2022 The First Slam Dunk 61.35G
[云资源] 花了一千多元买的私人健身教程
[书库] 史上最全摄影书推荐(附700本PDF版打包下载)
[动画] 北斗神拳(1984) [两季合集] [MKV]
[资料] 抗战阵亡将士资料+续编
[电视剧] 三体 (2024) 全8集 网飞版本 中文字幕 合集
[纪录片] 河西走廊【10集 国语 中文字幕 1080P 10.8G MP4】
[电影] 2024年喜剧片·热辣滚烫 [mp4]
[影视] 铁爪 WEB-DL版下载 2023 The Iron Claw 23.48G
- 最新评论
-
杂物房内的旧档资源不保证有效CC下载站 评论于:05-14 不能**123 评论于:05-14 我想看看mw2ddyy 评论于:04-26 好东西阿zfy123123 评论于:04-18 谢谢楼主xiaoqi 评论于:04-12 勿在线解压,勿手机解压,请在电脑上用最新款压缩软件解压!推荐360压缩或者好压CC下载站 评论于:04-10 无法解压啊,客服能不能给个解压教程ravengrey 评论于:04-10 谢谢支持!!CC下载站 评论于:03-26 很棒的资源,感谢分享云体风身 评论于:03-26 感谢分享,好东西云体风身 评论于:03-26
- 热门tag