写点什么

Python 爬取知乎上搞笑视频,一顿爆笑送给大家,程序员面试题精选 100 题

作者:程序媛可鸥
  • 2022 年 3 月 17 日
  • 本文字数:1437 字

    阅读完需:约 5 分钟

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:


url = "https://www.zhihu.com/api/v4/questions/312311412/answers?include=data%5B%2A%5D.is_normal%2Cadmin_closed_comment%2Creward_info%2Cis_collapsed%2Cannotation_action%2Cannotation_detail%2Ccollapse_reason%2Cis_sticky%2Ccollapsed_by%2Csuggest_edit%2Ccomment_count%2Ccan_comment%2Ccontent%2Ceditable_content%2Cvoteup_count%2Creshipment_settings%2Ccomment_permission%2Ccreated_time%2Cupdated_time%2Creview_info%2Crelevant_info%2Cquestion%2Cexcerpt%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%2Cis_labeled%3Bdata%5B%2A%5D.mark_infos%5B%2A%5D.url%3Bdata%5B%2A%5D.author.follower_count%2Cbadge%5B%2A%5D.topics&limit=20&offset="+str(i*20)+"&platform=desktop&sort_by=default"


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()


跑这个程序需要注意的是需要按照代码存储视频的路径建立一个文件夹:



结果经过一段时间爬虫,我们最终获得了七百多条视频:




现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到 1 套比较全的学习资源之前,我并没着急去看第 1 节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做 1 个学习计划,我的学习计划主要包括规划图和学习进度表。


分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习



用户头像

Python编程资料加Q群免费领取:419829237 2022.03.14 加入

还未添加个人简介

评论

发布
暂无评论
Python爬取知乎上搞笑视频,一顿爆笑送给大家,程序员面试题精选100题_Python_程序媛可鸥_InfoQ写作平台