但是不知道怎么回事,基本上绝大多数是无法下载,含有违规内容!!。 但使用 git clone '要下载的项目.git' 确实可以下载。所以有些时候遇到下载不了的情况,请使用python下载,既能做事又能装逼,😆。 下载图片、视频等文件网络传输时,其数据流都是二进制数据。所以我们要对url请求,获得该违建的二进制数据,并以wb模式写入一个文件中。注意写入的文件格式必须与待爬的文件格式一致。例如,要爬一个pdf文件,那么保存时一定要用pdf文件后缀名,而不能用doc或者txt。 import requestsimport os
dir = '/Users/suosuo/Desktop/下载' github项目下载import os
project_url = 'https://github.com/airingursb/bilibili-user.git' 我们可以将上面的代码封装一下,以后遇到这样的数据,迅雷下载不了,可以用这个牛逼的代码。 def download(dir,filename,url):
"""
用于下载图片、视频、github项目等文件
:param dir: 更改当前工作目录
:param filename: 待下载的文件名
:param url: 待下载的资源地址
"""
if 'https://github.com' in url:
import os
os.chdir(dir)
command = 'git clone {project}'.format(project=url)
os.system(command)
else:
import requests 测试一下我们分别测试下载一张图片、视频和一个github项目,都能正常运行,这里仅展示github项目的。当下载github时,并没有对文件重命名,所以这里filename我随便写了一个名。 download(dir='/Users/suosuo/Desktop',filename='一个框架',url='https://github.com/DarkSand/Sasila.git') 运行代码一会儿的功夫,桌面上出现了一个Sasila的文件夹。 制作GUI可视化界面为了让DIY下载器使用更方便一些,我使用了PyQt5编写了一个简单的GUI可视化点击操作应用,虽然丑,但是这是自己制作的下载器,很有成就感。 import sysfrom PyQt5.QtWidgets import QWidget, QPushButton, QLabel, QLineEdit, QApplicationclass Downloader(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
"""
生成我们熟悉的台式机上的软件,通过点击按钮执行下载任务
:return:
"""
#QToolTip.setFont(QFont('SansSerif', 10))
#输入url的文本框
self.urlbox = QLineEdit(self)
self.urlbox.setText('请输入url')
#当文本框数据变化会执行connect联系的函数urlChanged
self.urlbox.textChanged[str].connect(self.urlChanged)
self.urlbox.resize(200,20)
self.urlbox.move(50, 20)
#输入保存数据的路径
self.dirbox = QLineEdit(self)
self.dirbox.setText('请输入保存的文件夹路径')
# 当文本框数据变化会执行connect联系的函数dirChanged
self.dirbox.textChanged[str].connect(self.dirChanged)
self.dirbox.resize(200,20)
self.dirbox.move(50, 50)
#输入保存时的文件名
self.filenamebox = QLineEdit(self)
self.filenamebox.setText('请输入文件名')
# 当文本框数据变化会执行connect联系的函数filenameChanged
self.filenamebox.textChanged[str].connect(self.filenameChanged)
self.filenamebox.resize(200,20)
self.filenamebox.move(50, 80)
#点击按钮,执行下载任务
self.btn = QPushButton('Button', self)
self.btn.resize(200,20)
self.btn.move(50, 110)
#按钮状态改变时候,会执行connect联系的函数onClick
self.btn.clicked.connect(self.onClick)
#设置窗体的大小和在屏幕中的位置
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('大邓的下载器')
self.show()
def urlChanged(self, text):
sender = self.sender()
self.url = sender.text()
def dirChanged(self, text):
sender = self.sender()
self.dir = sender.text()
def filenameChanged(self, text):
sender = self.sender()
self.filename = sender.text()
def onClick(self):
sender = self.sender()
if sender.text() and self.filename and self.url and self.dir:
download(dir=self.dir, filename=self.filename, url=self.url)
执行程序,屏幕中出现 结语这还没有结束,今天做到这一步,本来还行更进一步将其打包成dmg或exe文件,由于能力和精力有限,没有解决各种bug。 如果有人解决了,请在公众号留言,谢谢。 历史文章:数据采集【视频】有了selenium,小白也可以自豪的说:“去TMD的抓包、cookie” 【视频】快来get新技能--抓包+cookie,爬微博不再是梦 文本处理分析图片数据处理其他可以选择打赏或转发来支持大邓 代码 链接: https://pan.baidu.com/s/1pLPwpCZ 密码: twtm |
|