代码实现

我们通过上面的尝试写了段代码,发现 B 站在一定程度上做了反爬虫操作,所以我们需要先获取 headers 信息,否则下载下来的视频是空的,然后定义 params 参数存储 JSON 数据,然后通过 requests.get 去获取其参数值信息,用 JSON 的格式返回到目标网页即可,实现代码如下:

def get_json(url):headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}params = {'page_size': 10,'next_offset': str(num),'tag': '今日热门','platform': 'pc'}try:html = requests.get(url,params=params,headers=headers)return html.json()except BaseException:print('request error')pass

为了能够清楚的看到我们下载的情况,折腾了一个下载器上去,实现代码如下:

def download(url,path):start = time.time() # 开始时间size = 0headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}response = requests.get(url,headers=headers,stream=True) # stream属性必须带上chunk_size = 1024 # 每次下载的数据大小content_size = int(response.headers['content-length']) # 总大小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) # 已下载的文件大小

效果如下:

将上面的代码进行汇总,整个实现过程如下:

#!/usr/bin/env python
#-*-coding:utf-8-*-
import requests
import random
import time
def get_json(url):headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}params = {'page_size': 10,'next_offset': str(num),'tag': '今日热门','platform': 'pc'}try:html = requests.get(url,params=params,headers=headers)return html.json()except BaseException:print('request error')passdef download(url,path):start = time.time() # 开始时间size = 0headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}response = requests.get(url,headers=headers,stream=True) # stream属性必须带上chunk_size = 1024 # 每次下载的数据大小content_size = int(response.headers['content-length']) # 总大小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) # 已下载的文件大小if __name__ == '__main__':for i in range(10):url = 'http://api.vc.bilibili.com/board/v1/ranking/top?'num = i*10 + 1html = get_json(url)infos = html['data']['items']for info in infos:title = info['item']['description'] # 小视频的标题video_url = info['item']['video_playurl'] # 小视频的下载链接print(title)# 为了防止有些视频没有提供下载链接的情况try:download(video_url,path='%s.mp4' %title)print('成功下载一个!')except BaseException:print('凉凉,下载失败')passtime.sleep(int(format(random.randint(2,8)))) # 设置随机等待时间

欢迎关注微信公众号  :   码奋

Email:maafenn@gmail.com

python 学习爬取哔哩哔哩今日热门的前100个视频相关推荐

  1. python 学习 爬取证券之星的股票信息

    python 学习 爬取证券之星的股票信息 选择原因,数据好获取,便于操作! 第一步,找到股票相关的信息,先去东方财富网,找到股票的代码查询一览表网站 ![在这里插入图片描述](https://img ...

  2. python学习爬取数据二级页面的数据

    本次主要是讲解如何爬取二级页面的数据 一,本次案例就业湖北美和易思的学习官网的最新课程为案例讲解 现在我们要爬取网站上的最新课程爬取前5页 爬取每门课的内容如下 二,下面直接上代码 结果如下 有不懂的 ...

  3. python学习 爬取中华英才网工作职位

    一.技能: (1)scrapy爬虫的原理: (2)xpath获取网页信息以及正则表达式的使用: 二.代码: (1)创建工程: scrapy   startproject   wuyoujob1 在sp ...

  4. python学习爬取肯德基官网商品地址的查询

    # 功能: 进行爬虫项目编写 # 开发时间: 2020/10/26 10:12 import requests import json if __name__ == '__main__':#进行UA伪 ...

  5. python 学习爬取链家武汉二手房市场成交记录

    以前几乎没有写过博客的,今年给自己立的flag其中有两条就是1.至少完成10篇计算类博客.2.每个月需要有一篇投资总结,so.. 由于老妈最近逼着买房,但是现在感觉确实不是好的时机,具体的这里不说,但 ...

  6. python学习 爬取亚马逊网页,失败后。修改HTTP报文头部后成功!

    通过修改HTTP报文头部,来成功获取网页内容! python import requests r = requests.get("https://www.amazon.cn/gp/produ ...

  7. python爬虫自学网站_python爬虫学习 爬取幽默笑话网站

    这篇文章主要介绍了python爬虫爬取幽默笑话网站,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 爬取网站为:http://xiaohua.zol. ...

  8. Python 学习 02 —— Python如何爬取数据

    文章目录 系列文章 二.Python 爬 虫 1.任务介绍 2.简介 3.基本流程 3.1.准备工作 3.1.1.分析页面 3.1.2.编码规范 3.1.3.导入模块 3.1.4.程序流程 3.2.获 ...

  9. 【Python】大数据挖掘课程作业1——使用爬虫爬取B站评论、弹幕与UP主的投稿视频列表

    [Python]大数据挖掘课程作业1--使用爬虫爬取B站评论.弹幕与UP主的投稿视频列表 数据挖掘部分的基本目标是:对于指定的UP主,能够获取其投稿视频列表:对于指定的视频,能够获取其视频标签.评论( ...

最新文章

  1. 印度首次挑战登月告败,一步之遥≈多大差距?
  2. dataframe获取指定列
  3. public private protected
  4. weblogic内存溢出linux,解决weblogic内存溢出有关问题
  5. error:use of undeclared identifier
  6. python监控某个程序_写一个python的服务监控程序
  7. 微软Tech·Ed与中国IT行业一同成长
  8. 学开发的基本规范和要求
  9. 查不到元素_浓重中国元素游戏的本地化地狱
  10. [渝粤教育] 西南科技大学 作物生产新理论与新技术 在线考试复习资料
  11. Python菜鸟之路:原生Ajax/Jquery Ajax/IFrame Ajax的选用
  12. 【国产MCU移植】看看有没有你需要的,一起来查漏补缺吧!(附已报名的硬件)...
  13. 通达信手机版分时图指标大全_手机炒股神器通达信公式手机版安装方法
  14. echarts:legend调整
  15. redis keys命令,生产环境慎用,最好屏蔽掉
  16. Photo2Cartoon,照片图片批量转漫画
  17. 人脸识别之表情识别(七)--面部表情识别阶段综述
  18. 天涯明月刀最新服务器,天涯明月刀手游手游开服表_天涯明月刀手游手游开服时间表_新服新区预告_第一手游网...
  19. 目标检测-ROI Pooling介绍
  20. 宝尚网上股票缩量商场拉大盘股高潮

热门文章

  1. 跟上学期给我们带过课的那个夹克男一样
  2. 非线性方程的数值解法:牛顿法及牛顿下山法(含Matlab程序)
  3. 2022上半年软考电子证书可以查询拉!
  4. Adobe也封杀中国账号了,技术管理者如何做到有备无患
  5. goland debug Got a connection, launched process /private/var/folders/l9/
  6. 生活中什么因素会诱发滑膜炎?
  7. 电商平台减少服务器性能,电商平台服务器数据安全灾备方案规划.doc
  8. 14、弱电工程综合布线系统常用的线材及设备图文资料
  9. MySQL安装 ,版本mysql-5.7.19-winx64
  10. python随机森林筛选变量_用随机森林分类器和GBDT进行特征筛选