记录一次 Python 脚本爬虫实录
背景
之前(2018年),看到人民日报上面有一个特别好的国庆专题,是讲得国内各个省份的一分钟视频跟介绍的,就把那个公账号的地址给记录下来,并整理成了文章–这里是中国。最近,因为要用到其中一分钟系列的视频作为素材,想着就用脚本下载下来。
刚开始准备用 Chrome 的 snippte 来做的,但是发现,由于有 很多页面跳来跳去的,所以导致很多数据得不到跟获取失败。没办法,只能上大杀器—-爬虫鼻祖 Python。
准备
软件条件:
- Python3
- [you-get][https://github.com/soimort/you-get]
- [requests][https://requests.readthedocs.io/en/master/]
数据条件:
- 之前保存的公众号文章地址
过程
分析页面
首先分析页面数据,例如打开’https://mp.weixin.qq.com/s/3JnEJKr9UlgWGdstYsv3hg‘ 公众号地址。发现其中嵌套了一个 iframe ,里面有个腾讯视频的播放器。点击页面的腾讯视频图标,外跳到腾讯视频中来播放该视频,该视频的真是播放地址为https://v.qq.com/x/page/d0725d6whiw.html
。可以看出整个地址的变量应该就是后面的d0725d6whiw
.
大概思路整理如下:
- 使用 Python 脚本打开公众号页面,拿到视频地址
- 抓取视频地址并保存
- 使用 you-get 工具下载视频
爬取视频地址
由于之前已经有获取到每个公众号的地址了,现在这里只需要,通过 requests
包获取到网页内容,记得配置 headers 否则打不开公众号地址,然后通过正则匹配到视频地址的关键串,之后在进行拼接,把所得的结果写入一个文件中。整个流程就完成。
主要代码如下:
1 | import requests |
下载视频
you-get
you-get 是一个 Python 写的下载工具,国内主流的网站都可以下载。不能破解 vip 视频哦,当然你要有 cookie 的话就可以下载,理论上,你看到什么就能下载什么。
安装方式: $ pip3 install you-get
更新方式: $ pip3 install --upgrade you-get
cookies
本文的获取 cookie 是使用的 Chrome 的插件 – cookies.txt。它可以导出 cookie 给其他程序使用。
下载命令:
1 | you-get -o /Users/ruicky/Downloads/中国一分钟 -I /Users/ruicky/Downloads/video.txt --cookies /Users/ruicky/Downloads/cookies.txt |
总结
通过简单的 Python 脚本就可以实现重复的劳动,果然强大如斯。但是也有一个问题需要考虑,通过 you-get 下载的视频即使携带了 cookie 了能够下载高清的视频,但是也是有水印的,这个怎么破呢?其实也有方法,那就是使用 Mac 下的一个好用方便的下载工具 Downie 4
,自己亲测使用抓包的地址下载没有水印,完美解决问题,但是不能实行自动化 比较可惜。