# *_* coding : UTF-8 *_*
# 文件名称 :bilibili_video.py
# 开发工具 :PyCharm
import requests # 网络请求模块
import time # 时间模块
import random # 随机模块
import os # 操作系统模块
import re # 正则表达式
# 哔哩哔哩小视频json地址
json_url = 'http://api.vc.bilibili.com/board/v1/ranking/top?page_size=10&next_offset={page}1&tag=今日热门&platform=pc'
class Crawl():
def __init__(self):
# 创建头部信息
self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0'}
def get_jsonurl(self,json_url):
response = requests.get(json_url, headers=self.headers)
# 判断请求是否成功
if response.status_code == 200:
return response.json() # 返回json信息
else:
print('获取json信息的请求没有成功!')
def download_video(self,video_url,titlename):
size = 0 # 记录叠加每次写入大小的变量
# 下载视频的网络请求
response = requests.get(video_url, headers=self.headers, stream=True)
content_size = int(response.headers['content-length']) # 视频内容的总大小
chunk_size = 1024 # 单次请求最大值
if not os.path.exists('video'): # 如果video目录不存在时
os.mkdir('video') # 创建该目录
if response.status_code == 200: # 判断请求是否成功
if os.path.exists('video'):
print('视频文件大小:%0.2fMB' % (content_size / chunk_size / 1024)) # 换算单位,并打印文件大小
with open('video/'+titlename+'.mp4', 'wb')as f: # 将视频写入指定位置
for data in response.iter_content(chunk_size=chunk_size): # 循环写入,实现一段一段的写
f.write(data) # 写入视频文件
f.flush() # 刷新缓存
size += len(data) # 叠加每次写入的大小
# 打印下载进度
print('\r 文件下载进度:%d%%(%d/%d)'%
(float(size / content_size * 100),size,content_size), end=" ")
else:
print('视频下载失败!')
if __name__ == '__main__':
c = Crawl()
ranking = 0 # 排名变量
for page in range(0,10):
json = c.get_jsonurl(json_url.format(page=page)) # 获取返回的json数据
infos=json['data']['items'] # 信息集
for info in infos: # 遍历信息
ranking+=1 # 叠加排名
print('\n正在下载排名第',ranking,'的视频')
title = info['item']['description'] # 视频标题
# 只保留标题中英文、数字与汉字,其它符号会影响写入文件
comp = re.compile('[^A-Z^a-z^0-9^\u4e00-\u9fa5]')
title = comp.sub('',title ) # 将不符合条件的符号替换为空
video_url = info['item']['video_playurl'] # 视频地址
c.download_video(video_url,title) # 下载视频,视频标题作为视频的名字
time.sleep(random.randint(3,6)) # 随机产生获取json请求的间隔时间
没有合适的资源?快使用搜索试试~ 我知道了~
7.Python实战操作源码网络爬虫.zip
共19个文件
py:16个
xlsx:1个
text:1个
0 下载量 187 浏览量
2023-06-20
22:36:13
上传
评论
收藏 340KB ZIP 举报
温馨提示
01解决直接访问请求地址返回403错误的问题.02通过正则表达式快速获取电影的下载地址03如何获取免费的代理IP. 04如何检测免费代理IP是否有效..05如何实现定时爬取网页内容..... 06 在Windows系统中如何实现定时执行Python的爬虫脚本..07如何爬取网页中动态加载的数据...................... 08 如何实现实时显示下载的进度(百分比形式》 09通过Selenium浏览器自动化测试框架获取HTML代码中的可用数据10 如何通过selenium框架实现自动切换浏览器页面.. 11 如何去除文本信息中的干扰数据.. 12如何将爬取的Unicode码转换为中文信息..13使用urlretrieve模块实现直接远程下载图片14如何获取网页中动态加载的验证码图片15 如何通过requests模块实现Cookie登录...16 如何通过爬虫实现GitHub网页的模拟登录..17如何使用移动端抓包工具Charles ..
资源推荐
资源详情
资源评论
收起资源包目录
7.Python实战操作源码网络爬虫.zip (19个子文件)
7.Python实战操作源码网络爬虫
01
Referer in header.py 1KB
13
download_pictures.py 2KB
09
python+selenium.py 1KB
03
Proxy_ip.py 1KB
07
dynamic_loading_data.py 839B
15
cookie_login.py 1KB
10
selenium_toggle_pages.py 2KB
11
demo
removal_of_interference_data.py 3KB
stations.text 49KB
get_stations.py 1KB
04
demo
ip.xlsx 6KB
detection_agent.py 1KB
1687271131333.jpg 302KB
08
bilibili_video.py 4KB
12
initData.py 990B
14
verification_code.py 713B
16
GitHub_Login.py 3KB
05
timing.py 2KB
02
demo.py 1KB
共 19 条
- 1
资源评论
柒月玖.
- 粉丝: 2w+
- 资源: 208
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Django和HTML的新疆地区水稻产量影响因素可视化分析系统(含数据集)
- windows conan2应用构建模板
- 3_base.apk.1
- 基于STM32F103C8T6的4g模块(air724ug)
- 基于Java技术的ASC学业支持中心并行项目开发设计源码
- 基于Java和微信支付的wxmall开源卖票商城设计源码
- 基于Java和前端技术的东软环保公众监督系统设计源码
- 基于Python、HTML、CSS的crawlerdemo软件工程实训爬虫设计源码
- 基于多智能体深度强化学习的边缘协同任务卸载方法设计源码
- 基于BS架构的Java、Vue、JavaScript、CSS、HTML整合的毕业设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功