最后轻松一夏,周末利用python爬取“陈翔六点半…

2018-09-18 06:46:11来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

觉得程序员再忙也需要给自己安排一点娱乐时间,对自己好点,自己对自己不好,谁会?

自己娱乐一般会有:跑步、看电影、小视频,而小视频是最家常的娱乐方式,看得最多的小视频是「 陈翔六点半 」,咦!

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

拍得搞笑,演技也一流,也不乏有内涵!非常推荐大家看看。

时间太贵,我耗不起

正题

先上Python爬取小视频的效果图,duang、duang、duang、想下载什么就是什么,哈哈。

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

打开浏览器(电脑版,方便调试)输入微博 url 点击输入框,输入「陈翔六点半」,回车搜索

 

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

 

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

 

但是发现在这个页面就只用几个视频。滑下一点,一看,有个「更多热门微博」,点击!

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

 

跳转到新页面,一看,一滑,就像一个无底洞!一直滑都会有视频!

咦,这不就是我要的视频数据嘛

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

仔细看地址,不知大家有没仔细看地址栏,我滑动时,地址是一直不变的,也就证明这网页是用 Ajax 来异步请求加载数据的!

我就马上按 F12 调出调试工具,点击 Network 选项卡,选中 XHR ,一边滑动网页,一边查看 Ajax 网络请求,选中一条查看

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

 

展开 Json 数据查看,可以看到每条视频微博数据,总供有十条

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

 

我想下载视频,如何快速找到视频的下载地址而不是每一个数据点开来看呢?我想想能不能借助了谷歌浏览器的忙。

随便点开其中一个视频,右键,竟然可以查看并复制视频链接

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

 

复制到视频链接后,贴到地址栏,回车访问,也能播放,大喜呀!

马上回到调试工具,点击 preview 预览数据,按 Ctrl + F 进行搜索,把刚刚复制的地址贴到搜索框

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

 

咦,竟然匹配到了!

发现 media_info 中的 stream_url 就是该视频的播放地址,也就是下载地址。再往前看,media_info 前面的 content2 是视频的在微博中的标题。

查看其他的 Json 数据也同样有视频地址和标题,复制里面的 视频地址 url 贴到浏览器地址栏也能直接播放视频!八九不离十,这个 stream_url 就是视频下载地址了

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

马上构造请求,根据刚刚复制的视频地址获取资源,并下载视频,看看有没有什么端倪,此时心中忐忑不安

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

很快就下载好了

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

 

点击播放视频,竟然毫无毛病,流畅播放!这下好了!就 kuang、kuang、kuang 准备开始撸代码了,不要怂,就是干!

认真查看请求地址、请求头中的请求地址,请求方法和 User—Agent 等,开始构建请求方法模拟 Ajax 请求,获取 Json 数据。

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

 

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

查看多几次异步请求,就会发现,变化的参数只有 page,可以一步步把一个参数删掉后测试一下能不能正常获取数据,这样把一些非不要的参数剔除。里面有一些注释,是我踩过的坑

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

,有兴趣就多看几眼

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

,希望各位看客能分享一下(在下方留言)在 python 爬虫上入过的一些坑,让彼此少躺枪!

获取到了页面后,构建方法解析 Json 数据,分析 Json 数据中的层级结构,把里面的视频名和视频下载地址提取出来。

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

 

这里有个快捷查出 stream_url 层级结构路径,选中该属性或者说节点,右键,copy property path

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

 

再粘贴到浏览器地址栏查看即可清晰知道它们之间的层级结构

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

 

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

面对这种多层 json 格式数据,我知道有上面两种取值方式,代码中也说明了各的优势和缺点,按需选取。如果你还有更优雅的方式,希望你能在下方留言

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

 

提取到视频的标题和下载地址后,简单改一下前面的下载方法,来适应一下

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

之后在,主函数中循环、遍历调用前面的方法,就下载指定到多少页的视频了

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

嗨皮时刻,效果如下

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

 

上面的代码中还有许多需要优化之处,比如下载时重名怎么办、各种参数的有效性判断等等,后面我也会优化一下,把它优化成:只用要用户输入自己喜欢的小视频制作方,如「 陈翔六点半」,再指定想看多少个视频或者多少页,后就自动下载视频,下载好了,就可以嗨皮娱乐一波了。关键是自己省很多时间,不得不像那些优秀的算法和大数据屈服!

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Python学习笔记(matplotlib篇)--坐标轴刻度

下一篇:小白的python进阶历程------03.字符串(str)