Python 爬取知乎上搞笑视频,一顿爆笑送给大家,程序员面试题精选 100 题
videoUrl = "https://lens.zhihu.com/api/v4/videos/"+str(data_lens[j])
R = requests.get(videoUrl,headers = kv)
Dicurl = json.loads(R.text)
playurl = Dicurl["playlist"]["LD"]["play_url"]
#print(playurl)#跳转后的视频 url
videoread = request.urlopen(playurl).read()
完成之后,我们就可以下载视频了。
完整版代码:
from urllib import request
from bs4 import BeautifulSoup
import requests
import re
import json
import math
def getVideo():
m = 0#计数字串个数
num = 0#回答者个数
path = u'/home/zhihuvideo1'
#path = u'/home/zhihuimage'
kv = {'user-agent':'Mozillar/5.0'}
for i in range(math.ceil(900/20)):
try:
r = requests.get(url,headers = kv)
dicurl = json.loads(r.text)
for k in range(20):#每条 dicurl 里可以解析出 20 条 content 数据
name = dicurl["data"][k]["author"]["name"]
ID = dicurl["data"][k]["id"]
question = dicurl["data"][k]["question"]["title"]
content = dicurl["data"][k]["content"]
data_lens = re.findall(r'data-lens-id="(.*?)"',content)
print("正在处理第" + str(num+1) + "个回答--回答者昵称:" + name + "--回答者 ID:" + str(ID) + "--" + "问题:" + question)
num = num + 1 # 每次碰到一个 content 就增加 1,代表回答者人数
for j in range(len(data_lens)):
try:
videoUrl = "https://lens.zhihu.com/api/v4/videos/"+str(data_lens[j])
R = requests.get(videoUrl,headers = kv)
Dicurl = json.loads(R.text)
playurl = Dicurl["playlist"]["LD"]["play_url"]
#print(playurl)#跳转后的视频 url
videoread = request.urlopen(playurl).read()
fileName = path +"/" + str(m+1) + '.mp4'
print ('===============================================')
print(">>>>>>>>>>>>>>>>>第---" + str(m+1) + "---个视频下载完成<<<<<<<<<<<<<<<<<")
videoname = open(fileName,'wb')
videoname.write(videoread)
m = m+1
except:
print("此 URL 为外站视频,不符合爬取规则")
except:
print("构造第"+str(i+1)+"条 json 数据失败")
if name == "main":
getVideo()
跑这个程序需要注意的是需要按照代码存储视频的路径建立一个文件夹:
![](https://static001.geekbang.org/infoq/52/52f541ea39c0b44b89fce98174877c34.png)
结果经过一段时间爬虫,我们最终获得了七百多条视频:
![](https://static001.geekbang.org/infoq/47/472dc2b965e371480721f36d9cd90b22.png)
![](https://static001.geekbang.org/infoq/a7/a74ca620f34c4bb6888d6f206d64adae.png)
现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到 1 套比较全的学习资源之前,我并没着急去看第 1 节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做 1 个学习计划,我的学习计划主要包括规划图和学习进度表。
分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习
![](https://static001.geekbang.org/infoq/16/168bb2b8e6ba5e1bbb6581befec82bd7.png)
评论