python-爬虫实例(4):获取b站的章若楠的视频

目录

前言

        道路千万条,安全第一条

        爬虫不谨慎,亲人两行泪

获取b站的章若楠的视频

一、话不多说,先上代码

二、爬虫四步走

1.UA伪装

2.获取url

3.发送请求

 4.获取响应数据进行解析并保存

 总结


前言

        道路千万条,安全第一条

        爬虫不谨慎,亲人两行泪

 

获取b站的章若楠的视频

        不要问,问就是博主喜欢,嘿嘿嘿嘿(流口水)

 

一、话不多说,先上代码

# 请求b站视频
import json
import requests
from lxml import etreeif __name__ == '__main__':head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0",# 防盗链"Referer": "https://www.bilibili.com/","Cookie": "buvid3=3EEF3EE1-472C-F430-105F-0E4F321F331C25161infoc; b_nut=1720613925; _uuid=46847D108-EFD1-9828-99910-32119EADB6EB26022infoc; enable_web_push=DISABLE; buvid4=E9918A3A-008D-2748-2B1F-78B04E8CCA5825688-024071012-IYJQtQw8DTdtrI0uY1UGvQ%3D%3D; buvid_fp=adf3cfaf35396cd4f051041d58ea252d; DedeUserID=455536180; DedeUserID__ckMd5=ece5cba51b3582b0; header_theme_version=CLOSE; rpdid=|(Y|RJRRJ~m0J'u~k|YuR|k); hit-dyn-v2=1; CURRENT_BLACKGAP=0; CURRENT_FNVAL=4048; CURRENT_QUALITY=80; b_lsid=FA4254F2_190DA67F5A6; bmg_af_switch=1; bmg_src_def_domain=i0.hdslb.com; SESSDATA=464ec009%2C1737203167%2C4093c%2A72CjCcAmS6QdnftcRgMbranRB57RDcvOgVEYQ2eANilbiZTke2ujiipqzyDhLaHzdf-lQSVnBETDB6RC1iRTBPOXE0MXJvWndtQ2J5M0ttRUdsNzV4eDBOS0ZHSnJFNGstUXdoZV9YWlFDMUN6WktnVWdyZzNXTHoxX3ZHMEQ4WnBRVFhuS3FWdlZRIIEC; bili_jct=7dcc1afe4e9061803755fe502bd89493; home_feed_column=5; browser_resolution=1528-750; bili_ticket=eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MjE5MTAzODcsImlhdCI6MTcyMTY1MTEyNywicGx0IjotMX0.ZBTc3IhjtIXKw31_mMRIL58EBBFttxFrh9PXvDeNu74; bili_ticket_expires=1721910327; sid=5oumv249; bp_t_offset_455536180=956974561008549888"}url = "https://www.bilibili.com/video/BV1Ya411x7YS/?spm_id_from=333.788.recommend_more_video.-1&vd_source=c37b332e3068ca57bd61f05c52b41922"response = requests.get(url, headers=head)vid = response.texttree = etree.HTML(vid)with open("bilibili.html", "w", encoding="utf8") as bili:bili.write(vid)vid_info = "".join(tree.xpath("//head/script[4]/text()"))[20:]# print(vid_info)   # 是一个json大字符串info_dict = json.loads(vid_info)# print(info_dict)  # 变成字典video_url = info_dict["data"]["dash"]["video"][0]["baseUrl"]  # 获取视频的网址audio_url = info_dict["data"]["dash"]["audio"][0]["baseUrl"]  # 获取音频的网址video_content = requests.get(video_url, headers=head).contentaudio_content = requests.get(audio_url, headers=head).contentwith open("zhangruonan.wmv", "wb") as a:a.write(video_content)with open("zhangruonan.mp4", "wb") as b:b.write(audio_content)pass

        可以看见,这次代码多了不少东西,还有些变得不一样了,没事,我们一步步分析。

 

二、爬虫四步走

1.UA伪装

        这次UA伪装的头部代码多了不少,"Cookie"和"Referer",这些其实都是b站的反扒机制。而且这次也不用随机生成UA了,而是使用检查里的,因为随机生成的可能是APP端的,这个用不了。

先登录自己的b站账号,再获取Cookie,因为每个用户的Cookie是不一样的

获取UA,

获取referer。

 

2.获取url

        在该界面按f12进入检查界面,若是检查界面没东西的话就刷新网页,然后往上翻到第一个,复制url粘贴到pycharm即可

 

3.发送请求

流水的url,铁打的发送请求。

response = requests.get(url, headers=head)

 

 4.获取响应数据进行解析并保存

  • 这次不一样的地方在于,视频和音频的url在head的第四个script标签下。
  • 而里面的文本内容在去除前面的"window.__playinfo__="后,取出来的是个json大字符串。
  • 用json.loads方法将字符串转换成字典,再通过字典的键去除里面的视频和音频的url。
  • b站的视频和音频网址都放在固定的键内,用上面给的代码即可取出来。
  • 取出来之后再次发送请求,获取数据。
  • 注意!!!图片,视频和音频都是二进制内容,所以用content属性获取。
  • 最后, 以写二进制内容的方式存入文件中,注意文件的类型,音频是MP4,视频是MP4或者是wmv。

 

 总结

作者的废话:

        章若楠太好看啦!

封面图片:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/381888.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

成为CMake砖家(4): VSCode中的CMake语法高亮

大家好,我是白鱼。 在成为CMake砖家的路上,我的主力 IDE/编辑器是 VSCode。 VSCode 免费、插件丰富、文档完善, 相比于 CLion 的年费几百上千元的license真的很香。 不过, 工欲善其事必先利其器, VSCode 需要安装合适…

FastDFS分布式存储

一:FastDFS原理 FastDFS是一个开源的轻量级分布式文件系统,功能包括:文件存储,文件同步,文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。 1:FastD…

物联网在电力行业的应用

作者主页: 知孤云出岫 这里写目录标题 作者主页:物联网在电力行业的应用简介主要应用领域代码案例分析1. 智能电表数据采集和分析2. 设备监控和预测性维护3. 能耗管理和优化4. 电力负载预测5. 分布式能源管理6. 电动汽车充电管理7. 电网安全与故障检测 物联网在电力行业的应用…

CH03_布局

第3章:布局 本章目标 理解布局的原则理解布局的过程理解布局的容器掌握各类布局容器的运用 理解 WPF 中的布局 WPF 布局原则 ​ WPF 窗口只能包含单个元素。为在WPF 窗口中放置多个元素并创建更贴近实用的用户男面,需要在窗口上放置一个容器&#x…

海康威视综合安防管理平台 detection 前台RCE漏洞复现

0x01 产品简介 海康威视综合安防管理平台是一套“集成化”、“智能化”的平台,通过接入视频监控、一卡通、停车场、报警检测等系统的设备。海康威视集成化综合管理软件平台,可以对接入的视频监控点集中管理,实现统一部署、统一配置、统一管理和统一调度。 0x02 漏洞概述 海康…

【Gin】精准应用:Gin框架中工厂模式的现代软件开发策略与实施技巧(上)

【Gin】精准应用:Gin框架中工厂模式的现代软件开发策略与实施技巧(上) 大家好 我是寸铁👊 【Gin】精准应用:Gin框架中工厂模式的现代软件开发策略与实施技巧(上)✨ 喜欢的小伙伴可以点点关注 💝 前言 本次文章分为上下两部分&…

算法题目整合4

文章目录 122. 大数减法123. 滑动窗口最大值117. 软件构建124. 小红的数组构造125. 精华帖子126. 连续子数组最大和 122. 大数减法 题目描述 以字符串的形式读入两个数字,编写一个函数计算它们的差,以字符串形式返回。输入描述 输入两个数字&#xff…

UE TSharedPtr

文章目录 概述TSharedPtrTSharedPtr包含2部分 构造,析构,拷贝构造,移动构造构造拷贝构造移动构造 小结 概述 之前写过一篇c的智能指针的,这篇写下ue的。本质上来说是差不多的,可以简单看看。 TSharedPtr 如下图&…

分析性能提升40%,阿里云Hologres流量场景最佳实践

在互联网和移动分析时代,流量数据成为了企业洞察用户行为、优化产品决策和提升运营效率的关键资源。流量数据主要来源于用户在使用APP、小程序或访问网站等媒介平台时产生的各种操作行为,如点击、浏览、注册、下单等。这些行为数据通过数据埋点技术被采集…

人工智能与机器学习原理精解【3】

文章目录 泰勒级数逼近基础一阶导数和二阶导数的几何意义一阶导数的几何意义二阶导数的几何意义应用示例 导数与微分的区别1. 定义与本质2. 几何意义3. 表达式与关系4. 应用场景 可微函数定义几何意义性质例子 导数导数的定义导数的计算导数的几何意义导数函数的图像一、常见导…

使用Redis的SETNX命令实现分布式锁

什么是分布式锁 分布式锁是一种用于在分布式系统中控制多个节点对共享资源进行访问的机制。在分布式系统中,由于多个节点可能同时访问和修改同一个资源,因此需要一种方法来确保在任意时刻只有一个节点能够对资源进行操作,以避免数据不一致或…

SpringMVC源码深度解析(中)

接上一遍博客《SpringMVC源码深度解析(上)》继续聊。最后聊到了SpringMVC的九大组建的初始化,以 HandlerMapping为例,SpringMVC提供了三个实现了,分别是:BeanNameUrlHandlerMapping、RequestMappingHandlerMapping、RouterFunctio…

mysql面试(一)

前言 从今天开始,更新一些mysql的基础知识,面试会遇到的知识点之类的内容。比如四个隔离级别,mvcc机制,三大日志,索引,B树的形成等等,从数据库的底层来剖析索引和树是怎么形成的,以…

【常见开源库的二次开发】基于openssl的加密与解密——MD5算法源码解析(五)

一、MD5算法分析 : 1.1 关于MD5 “消息摘要”是指MD5(Message Digest Algorithm 5)算法。MD5是一种广泛使用的密码散列函数,它可以生成一个128位(16字节)的散列值。 RFC 1321: MD5由Ronald Rivest在1992…

算法017:二分查找

二分查找. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/binary-search/ 二分查找,其实是双指针的一种特殊情况,但是时间复杂度极低&#…

Web前端:HTML篇(一)

HTML简介: 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。 您可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器…

MongoDB教程(十三):MongoDB覆盖索引

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言什么是覆盖…

Elasticsearch介绍、安装以及IK分词器 --学习笔记

Elasticsearch 是什么? Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎。它允许你以极快的速度存储、搜索和分析大量数据。Elasticsearch 基于 Apache Lucene 构建,提供了一个分布式、多租户能力的全文搜索引擎,带有 HTTP web 接口…

安装Ubuntu24.04服务器版本

Ubuntu系统安装 一.启动安装程序二.执行 Ubuntu Server 安装向导1.选择安装程序语言,通常选择「English」2.设置键盘布局,默认「English US」即可3.选择安装方式 三.配置网络1.按Tab键选择网络接口(例如 ens160),然后按…

Java:115-Spring Boot的底层原理(下篇)

这里续写上一章博客(115章博客) SpringBoot视图技术: 支持的视图技术 : 前端模板引擎技术的出现(jsp也是),使前端开发人员无需关注后端业务的具体实现(jsp中,具体的…