目录

1 准备1.1 安装Python1.1.1 安装1.2.2 检验1.1.3 常见问题

1.2 安装pip1.2.1 安装1.2.2 检验

1.3安装you-get1.3.1 安装1.3.2 检验

2 基础3 进阶4 大神

1 准备

1.1 安装Python

1.1.1 安装

如果已安装过Python,请直接跳步至1.1.2

下载地址:https://www.python.org/downloads/

也可以直接点下面链接获取: 3.10.6安装包链接: https://www.aliyundrive.com/s/uc8zJhiCs3S

下载完后双击打开! 直接Next

等待安装完成~

安装完成,(o゜▽゜)o☆[BINGO!]

PS:选择自定义安装注意更改Python保存位置,否则接下去的操作无法完成 具体操作方法参考以下链接: https://blog.csdn.net/Steve_Lee_/article/details/123169242#t5 而且要注意更改完保存位置后确保权限为完全控制(否则安装包时可能会提示无法写入) 查看方法:右键保存文件夹-属性-安全-Users 正确示例:

1.2.2 检验

WIn+R打开运行框,输入cmd回车

输入python回车,出现以下代码说明安装成功

1.1.3 常见问题

安装时出现未指定错误0x80072efd 原因:误勾选了最后两个选项

解决链接: https://www.jianshu.com/p/bc1263f12c4f

检验时显示“python不是内部或外部命令,也不是可运行的程序或批处理文件” 原因:忘记勾选Add Python 3.10 to PATH 解决方案:记得安装路径的手动添加一下Path,不记得的还是重装快一点~ 参考链接: https://www.php.cn/python-tutorials-424800.html 原本存在的python文件图标变白 解决方案请参考https://jingyan.baidu.com/article/db55b609c1d7b94ba30a2f97.html

1.2 安装pip

如果是按照上述方式安装的Python,pip已经自动安装在计算机上,请直接跳步至1.3安装you-get

如果不确定是否安装请参考1.2.2检验

1.2.1 安装

以管理员身份运行cmd依次输入以下代码:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

python get-pip.py

python -m pip install --upgrade pip

1.2.2 检验

运行cmd输入pip回车,若出现如下信息说明安装成功

PS:pip更详细的使用方法可参考https://www.php.cn/python-tutorials-492847.html 以及 https://www.runoob.com/w3cnote/python-pip-install-usage.html

1.3安装you-get

1.3.1 安装

以管理员身份运行cmd输入pip install you-get

1.3.2 检验

打开cmd输入you-get回车,若出现以下信息说明安装成功

2 基础

you-get的用途就是从网页上下载视频、图片及音乐。

最基础的使用方法如下所示:

打开想要下载的资源的网址(url)并复制(有条件的精准复制) 打开cmd或powershell输入you-get url PS:如果网址里有&,注意加“”,即把&改成“&”

示例(从B站上下载一个视频,图片、音乐的下载以此类推):

you-get https://www.bilibili.com/video/BV16V4y1J7XL?spm_id_from=333.1007.tianma.4-1-9.click

默认下载位置在C:\Users\用户名目录下

3 进阶

you-get中文说明地址:https://github.com/soimort/you-get/wiki/中文说明(个人觉得还行,但很多参数都没讲)

进入正题,虽然上述方法已经可以实现下载的基本要求了,但对于大多数使用者(比如我)来说这还远远不够。。。

因此,我们需要借助you-get自带的参数(cmd输入you-get -h可以浏览所有参数):

you-get: version 0.4.1620, a tiny downloader that scrapes the web.

usage: you-get [OPTION]... URL...

A tiny downloader that scrapes the web

options:

-V, --version Print version and exit

-h, --help Print this help message and exit

Dry-run options:

(no actual downloading)

-i, --info Print extracted information

-u, --url Print extracted information with URLs

--json Print extracted URLs in JSON format

Download options:

-n, --no-merge Do not merge video parts

--no-caption Do not download captions (subtitles, lyrics, danmaku, ...)

--postfix Postfix downloaded files with unique identifiers

-f, --force Force overwriting existing files

--skip-existing-file-size-check

Skip existing file without checking file size

-F STREAM_ID, --format STREAM_ID

Set video format to STREAM_ID

-O FILE, --output-filename FILE

Set output filename

-o DIR, --output-dir DIR

Set output directory

-p PLAYER, --player PLAYER

Stream extracted URL to a PLAYER

-c COOKIES_FILE, --cookies COOKIES_FILE

Load cookies.txt or cookies.sqlite

-t SECONDS, --timeout SECONDS

Set socket timeout

-d, --debug Show traceback and other debug info

-I FILE, --input-file FILE

Read non-playlist URLs from FILE

-P PASSWORD, --password PASSWORD

Set video visit password to PASSWORD

-l, --playlist Prefer to download a playlist

-a, --auto-rename Auto rename same name different files

-k, --insecure ignore ssl errors

-m, --m3u8 download video using an m3u8 url

Playlist optional options:

--first FIRST the first number

--last LAST the last number

--size PAGE_SIZE, --page-size PAGE_SIZE

the page size number

Proxy options:

-x HOST:PORT, --http-proxy HOST:PORT

Use an HTTP proxy for downloading

-y HOST:PORT, --extractor-proxy HOST:PORT

Use an HTTP proxy for extracting only

--no-proxy Never use a proxy

-s HOST:PORT or USERNAME:PASSWORD@HOST:PORT, --socks-proxy HOST:PORT or USERNAME:PASSWORD@HOST:PORT

Use an SOCKS5 proxy for downloading

看着很多其实常用的也就十个左右,接下来我就一一介绍。

-i, --info Print extracted information 很多网站对同一个视频会提供很多种格式和清晰度,所以在下载前可以通过-i参数来提取相关信息,示例如下:

you-get -i https://www.bilibili.com/video/BV16V4y1J7XL?spm_id_from=333.1007.tianma.4-1-9.click

-F STREAM_ID, --format STREAM_ID Set video format to STREAM_ID 从上面的图中可以看到很多不同的格式和清晰度,如果要选择就需要使用-F/--format参数,示例如下: 然后再加上网址,最终命令如下:

you-get --format=dash-flv720 https://www.bilibili.com/video/BV16V4y1J7XL?spm_id_from=333.1007.tianma.4-1-9.click

PS:上面两个参数其实平常使用的并不多,因为下载时默认选择最高画质

--no-caption Do not download captions (subtitles, lyrics, danmaku, ...) 细心的小伙伴可能已经发现了,我们每次下载除了我们想要的视频文件,还会有。xml格式的文件,打开发现是弹幕文件。这个时候我们就可以用--no-caption参数避免下载附加文件(如弹幕(.xml文件)) -O FILE, --output-filename FILE Set output filename -O参数用于选择输出文件的名称,示例如下:

you-get -O 演示视频.flv https://www.bilibili.com/video/BV16V4y1J7XL?spm_id_from=333.1007.tianma.4-1-9.click #输出文件名为演示视频.flv

-o DIR, --output-dir DIR Set output directory -o参数用于选择输出文件夹,示例如下:

you-get -o D:\mhp https://www.bilibili.com/video/BV16V4y1J7XL?spm_id_from=333.1007.tianma.4-1-9.click #输出文件夹为D:\mhp

-p PLAYER, --player PLAYER Stream extracted URL to a PLAYER

有时我们需要直接播放视频,这个时候可以用-p参数,示例如下:

进入播放器目录下(可以右键快捷方式,选择打开文件所在位置)按住Shift右键,选择在此处打开PowerShell输入以下代码回车

you-get -p PotPlayerMini64.exe https://www.bilibili.com/video/BV16V4y1J7XL?spm_id_from=333.1007.tianma.4-1-9.click"&"vd_source=5398c273c88af14248fea9c85f8a2d8f"&"t=52.8

-c COOKIES_FILE, --cookies COOKIES_FILE Load cookies.txt or cookies.sqlite 有些视频需要会员才能下载,这个时候我们可以用会员的cookie下载 关于cookies文件的获取大家可以去火狐浏览器上登一下任意一个B站大会员的账号,然后在资源管理器中搜索cookies.sqlite(路径中有Mozilla和Firefox是我们要找的),最后复制出来就能使用啦! 假设我把cookies文件放在了D盘根目录下,即我的cookies文件的绝对路径为‪D:\cookies.sqlite,那么我用该cookies下载视频的示例如下:

you-get -c D:\cookies.sqlite https://www.bilibili.com/video/BV16V4y1J7XL?spm_id_from=333.1007.tianma.4-1-9.click

-l, --playlist Prefer to download a playlist 如果需要下载视频列表(如下载电视剧/番剧的时候),则可以使用-l参数,示例如下:

you-get -l https://www.bilibili.com/bangumi/play/ep83810?from_spmid=666.25.episode.0"&"from_outer_spmid=666.4.0.0"&"t=4.4

这个命令可以依次下载整部剧,注意中途不要进行多余操作,否则会容易中断下载。

--skip-existing-file-size-check Skip existing file without checking file size you-get有断点续存的功能,但是在重新检测文件是否已经下载的时候可以使用此参数跳过文件大小检查,加快下载进程。

最后,注意实际运用时可以同时使用多个参数以实现多个功能,比如:

you-get -c D:\cookies.sqlite -l -o D:\mhp --no-caption https://www.bilibili.com/video/BV16V4y1J7XL?spm_id_from=333.1007.tianma.4-1-9.click

4 大神

学习you-get的命令行使用方法以后就可以结合Python编程实现一定的自动化。

下面就是一个简单的示例:

打开网页,对url进行分析

第一集:https://www.bilibili.com/bangumi/play/ep83810?from_spmid=666.25.episode.0&from_outer_spmid=666.4.0.0&t=1.5 第二集:https://www.bilibili.com/bangumi/play/ep83811?from_spmid=666.25.episode.0&from_outer_spmid=666.4.0.0&t=48.4 第三集:https://www.bilibili.com/bangumi/play/ep83812?from_spmid=666.25.episode.0&from_outer_spmid=666.4.0.0&t=2.1 很尴尬地发现没啥规律,但是也不是一点用都没有,于是想可以将想要下载的url放一个txt文件里,用Python导入后进行多线程下载,提高下载速度(单独下载一个视频时,you-get不能充分利用内存)。于是乎有了以下思路:

思路一:开多线程下载,尝试后发现由于只有一个运行框,导致虽然所有进程都在跑,但是真正在下载的只有一个,pass掉 思路二:每开一个线程就运行一次powershell,这样就可以避免因运行框数量导致无法同时下载。尝试后发现自己不知道如何把输出定向到不同的窗口,再次pass掉 思路三:生成多个py文件并写入下载命令,然后同时选中执行,然后发现py文件不能直接写入~于是便想到先生成txt文件,在写入命令后重命名为py文件即可,发现可行,源码如下:

import os

import keyboard

def you_get(url,i):

workpath = os.getcwd()

with open(f'{workpath}\\{i}.txt','w', encoding="utf-8") as file:

file.write('import os\n')

file.write(f'os.system("you-get -c D:\cookies.sqlite -o D:\mhp\ --no-caption {url}")')

origin = os.path.join(os.getcwd(),f'{i}.txt')

current = os.path.join(os.getcwd(),f'{i}.py')

os.rename(origin, current)

url_list = []

with open("./url.txt") as url_file:

urls = url_file.read()

url_initial_list = urls.splitlines(keepends=False)

for i in url_initial_list:

url = i.replace("&",r"\"&\"")

url_list.append(url)

n = int(len(url_list))

for i in range(n):

url = url_list[i]

you_get(url,i+1)

使用方法:

1.将上述代码保存为py文件(cookies和下载目录自己改一下) 2.用pip install keyboard安装keyboard包 3.新建url.txt并输入url(写完一个换行),和上述py文件保存在同一目录下 4.运行py文件,这时会生成多个py文件,同时选中后按回车运行即可

有能力的小伙伴还可以结合爬虫技术实现更强大的功能,有好的想法可以在评论区一起探讨。

读到这里,如果觉得文章还可以的话,希望三连支持一下!

最后,祝成功!如有错误,欢迎大佬在交流区指正!

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: