python实战笔记之(8):下载知乎视频

这篇想写很久了,今天专门搞了搞,现在把用python下载知乎视频的整个流程码下来。

(1)目标站点分析

比如这篇知乎文章https://www.zhihu.com/question/279247693/answer/442578073里有一个小视频,我们想把它下载下来,首先对该网页进行分析。先来看一下原始请求:

原始请求有没有返回视频的链接呢?我们点开“Preview”和“Response”看一看:

这不就是我们想要的东西吗!接下来就是常规操作了,requests请求到网页代码之后可以用正则表达式或者BeautifulSoup和PyQuery之类的解析库提取到视频的URL。

现在让我们看一看上面的视频URL打开之后是什么东西:

显然,这是一个可以播放的视频,问题是我们怎样才能把它下载下来呢?一步一步来分析:

首先,我们发现原始请求返回的状态码是301,而且细心一些就可以看到网页的URL变了,从原来的https://www.zhihu.com/video/1001598833150816256变成了一个新的URLhttps://v.vzuu.com/video/1001598833150816256,如上图。状态码301代表什么呢,同样百度一下:

301表示永久重定向(301 moved permanently),表示请求的资源分配了新url,以后应使用新url。

这样就可以理解了,也就是请求视频的URL之后,转到了一个新的URL,我们可以用一个函数获取到这个新的URL:

def get_real_url(url, try_count=1):
	if try_count > 3:
		return None
	try:
		headers = {
			'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36'
		}
		response = requests.get(url, headers=headers, timeout=10)
		if response.status_code >= 400:
			return get_real_url(url, try_count+1)
		return response.url
	except RequestException:
			return get_real_url(url, try_count+1)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值