用Markdown发布解析有问题。 重新发吧。 。。
看完Al Sweigart的《Automate the Boring Stuff with Python》,附上网页原版
https://automatetheboringstuff.com/喜欢实体书的可以豆瓣
中文版。 这里不介绍统计、画图、
机器学习了。 讲一下另一个更加有趣和实用的功能,自动化。 当然你也可能把它用来当做爬虫。
下面的例子教大家如何自动下载YouTube视频。 同样你也可以修改一下用来下B站视频,[
参考]
简单介绍一下
Clicknium是2022年最新的Python自动化库,可以用来自动化操作网页和Windows App. 采用可视化操作和代码结合的方式实现自动化。
pytube是一个用来下载youtube视频的Python库。 只要用视屏的link就可以下载(当然网首先得通)
确保你有:
- 一个Python3.7+的环境
- VS Code
- 梯子
配置Clicknium

1. 在VS Code的插件市场中搜索并安装Clicknium
在VS Code右侧点击Clicknium的图标进入Welcome页面, 跟着welcome 点击按钮安装module, chrome的插件和注册账号。
### Code
用VS Code 创建一个Python文件,比如 `youtube.py`
可以通过F5运行。 这行代码Clicknium会自动打开Chrome浏览器,并且进入油管的首页。
抓取
这个时候,我们要下载霉霉的视频, 那就得先打开霉霉视频页,类似把大象塞进冰箱:
步骤:
1. 在搜索框输入Taylor Swift
2. 点击搜索按钮
3. 点击进入霉霉首页
4. 点击进入霉霉视频页
这里一个涉及到四个元素:搜索框, 搜索按钮,搜索结果中的艺人名字,视频页切换按钮
Clicknium中使用Locator来定位UI元素, 并且提供了Recorder来生成Locator。
我们使用上面的代码打开油管页面然后打开VS Code调用Recorder。
调用Recorder
点击上图VS Code中Locator tab上这个小小的capture按钮启用Recorder。这个按钮比较隐蔽。如果没看到LOCATORS 这个tab,点击右上角的三个点勾选Locator。 将鼠标移动到搜索栏上,会自动高亮显示input。按住Ctrl+Click(鼠标右键单击)即可抓取 搜索框。 同样的方法 抓取**搜索按钮**,和下图右上角**Taylor Swift的链接**。

)
Youtube页
Recorder
每次抓取都会在Recorder中生成一个UI元素对应的locator,可以对其进行重命名。完成后点击Complete。
然后回到VS Code
通过find_element函数传入对应locator定位到某个UI元素然后利用set_text方法将“Taylor Swift”写入搜索框。
下一行是相同的方法定位到搜索按钮,然后用click函数表示鼠标点击。TS表示搜索结果中taylor Swift的连接。
运行上面的code,进入霉霉的主页,我们采用相同的方法进入视频列表。
视频列表
在上图的列表中我们需要拿到每个视频的地址。 这个地址可以通过locator取得。 我们不可能给每个视频都抓取一个Locator,这里使用Clicknium Recorder一个非常强大的功能 Similar elements。点击下图的按钮后, 同样采用Ctrl+Click的方式,Clicknium就能自动识别的到类型的元素,生成一个locator。
因为视频列表是异步加载的, 我们需要使用wait_appear等待locator出现。因为使用similar elements抓取了多个视频,这个locator指向了多个视频所以使用find_elements方法。这个方法会返回一个UiElement的List。我们可以href从中获取到视频的相对路径,拼接上油管的地址就能得到完整的URL。
有了完整url,就可以使用Pytube下载视频了。 Pytube可以根据指定的参数下载不同分辨率的视频,需要注意高画质是video codec 和audio codec分开的。 具体可以参考
Working with Streams and StreamQuery。 这里我们下载1080p的版本,下载路径可以修改SAVE_PATH。可是使用相同的方法实现视频上传。 反响好我就再写一篇。
下面是完整的代码:
参考:
[
Clicknium]
[
Pytube]