Python爬哔哩哔哩的⼩视频呃呃,这个好像⽤处不怎么⼤,就当玩⼀玩,直接看代码,代码中有很多注释
# -*- coding: utf-8 -*-
# 它可以模拟浏览器向⽹站发送⼀个请求[命令]
import requests
'''
编写爬⾍的过程中
基于html去分析⽹页数据并删选
** 使⽤浏览器去分析这个⽹站的接⼝ [api] 到它之后利⽤
requests去请求这个api 拿到api的数据[json] 字典基本数据结构
利⽤字典的特性去获取字典中的数据并下载
'''
# 去获取api 利⽤requests去访问这个接⼝模拟浏览器
# 禁⽌⾮浏览器访问的代码⼀律禁⽌访问
# 防⽌爬⾍去过度的向服务器发请求哔哩哔哩的后台服务器会出现过载的情况
def get_json(url):
# 伪装成浏览器向这个接⼝拿数据作⽤域
#headers 是请求头
headers = {
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0'
}
# 分析api这个链接
# 在api中会有⼀些关键字
# 如果这些关键字改变的话那它返回的值也是不⼀样的
#构建api关键字参数
params = {
'page_size': 10,
#动态参数
'next_offset': str(num),
'tag': '今⽇热门',
'platform': 'pc',
}
#请求api的数据
try:
# 获取api的所有数据
html = (url, params=params, headers=headers)
return html.json()
except BaseException:
print('请求失败...')
def downloader(url, path):
# 初始化参数当你在下载视频的时候 0kb开始⼀直到这个视频的总⼤⼩在下载之前我们要定义这个视频    # ⼤⼩的参数
size = 0
# 伪装成浏览器向这个接⼝拿数据
headers = {
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0'
}
# 取变量名⼀定见名起意
response = (url, headers=headers, stream=True)
# socket 做下载 IO流每次下载的数据⼤⼩以1024作为⼀个节点
chunk_size = 1024
# 视频总⼤⼩在python中是字典格式
content_size = int(response.headers['content-length'])
print(content_size)
if response.status_code == 200:
print('[⽂件⼤⼩]: %0.2f MB' % (content_size / chunk_size / 1024))
with open(path, 'wb') as file:
# 迭代响应数据
for data in response.iter_content(chunk_size=chunk_size):
file.write(data)
size += len(data)
size += len(data)
# ⼊⼝函数
if __name__ == "__main__":
for i in range(10):
url = 'api.vc.bilibili/board/v1/ranking/top?'
# 翻页的值动态的 11 21 31
num = i * 10 + 1
html = get_json(url)学python看谁的视频比较好
infos = html['data']['items']
for info in infos:
# ⼩视频的标题
title = info['item']['description']
# ⼩视频的下载链接
video_url = info['item']['video_playurl']
print(title)
try:
downloader(video_url, path='./视频/%s.mp4' % title)
print('下载成功...')
下图是怎样在浏览器上获取"User-Agent":,你必须要打开你要爬取东西的页⾯上才⾏
还需要获取正确的api,点击左侧域名中有api的,如果右侧出现和图中差不多就是正确的api

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。