一直都想爬个视频玩玩于是…
分析网站
检查网页源码发现并没有视频信息 于是按F12 进入network中刷新页面发现 如下
request中的url地址才是真正的我们想要的地址,访问之后服务器返回明文json数据 于是豁然开朗
接下来我们点击 加载更多 去寻找是怎么翻页的 发现:
现在已经获取到所有必要的信息了 开始写程序:
import json
import requests
def get_url(url, hander):
try:
r = requests.get(url, headers=hander, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except requests.exceptions.ConnectTimeout:
print("(1)连接超时")
return ""
except requests.exceptions.HTTPError as e:
print(e)
return ""
def prasing_page(html, hander,s):
s = s+1 #页数+1
json_data = json.loads(html) #将json数据转换为python数据
py_data = json_data['data'] #获取data的值
for i in range(len(py_data)):
try:
print("\r当前进度第{}页>>>>>>>>>>>>>>{:.0f}%".format(s, i * 100 / len(py_data)), end="") #在一行显示进度
with open('O:/ku6_viedo/'+py_data[i]['title']+'.mp4', 'wb') as f:
r = requests.get(py_data[i]['playUrl'], headers=hander, timeout=30)
f.write(r.content)
f.close()
except requests.exceptions.ConnectTimeout:
print("(2)下载超时")
continue #如果下载超时则进行下一个视频下载
def main():
hander = {"User-Agent": "Mozilla/5.0"}
deep = 20 #定义总共爬取多少页
s = 0 #定义一个变量 表示页数
for i in range(deep): #循环爬取页面
url = "https://********/video/feed?pageNo="+str(i)+"&pageSize=40&subjectId=76"
html = get_url(url, hander)
prasing_page(html, hander, s)
main()
运行成功!