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

devtools/2024/12/22 9:02:00/

目录

前言

        道路千万条,安全第一条

        爬虫不谨慎,亲人两行泪

获取b站的章若楠的视频

一、话不多说,先上代码

二、爬虫四步走

1.UA伪装

2.获取url

3.发送请求

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

 总结


前言

        道路千万条,安全第一条

        爬虫不谨慎,亲人两行泪

 

获取b站的章若楠的视频

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

 

 

一、话不多说,先上代码

python"># 请求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是不一样的197af90cade14473a4951e0f1f076090.png
  • 获取UA,ab41406bb2f8457ebed5a14f1d30226a.png
  • 获取referer。df0e3bc694544a1787d18b9aa527c08a.png

 

2.获取url

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

 

3.发送请求

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

python">response = requests.get(url, headers=head)

 

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

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

cd57cda9da60489d843f74f57aa6b5af.png

 

 总结

作者的废话:

        章若楠太好看啦!

封面图片:

e81c0805ea854baa9fab333f9e907007.jpeg


http://www.ppmy.cn/devtools/85405.html

相关文章

数据库实验:SQL Server创建数据库及基本表

一、实验目的: 1、掌握使用SQL SERVER Management Studio工具连接数据库引擎; 2、掌握使用CREATE TABLE 创建基本表的用法; 3、掌握使用ALTER TABLE 修改基本表的用法; 4、掌握使用DROP TABLE删除基本表的用法; 二…

FLINKCDC连接oracle导致归档日志暴增

前言 前段时间再用flinkcdc连接oracle的时候,oracle的归档日志疯狂的飙升,我经常去到归档目录下查看占用的内存情况。。 情况 在使用flinkcdc连接oracle的时候,发现归档日志飙升,查看了很多文档,该配置了都配置了, …

【概率论】第一章:概率论基本概念

文章目录 一. 随机事件与空间样本二. 事件间的关系与事件的运算三. 概率、条件概率、事件独立性与五大公式1. 概率2. 条件概率3. 事件独立性4. 五大公式 四. 古典型、几何型概率、伯努利试验 确定现象:磁极同性相斥 随机现象:在单次实验结果中呈现出不确…

学习笔记12:域名。全球加速,自定义源站,自定义CDN加速

域名。全球加速,自定义源站,自定义CDN加速 域名、全球加速、自定义源站和自定义CDN加速是网络和网站管理中常见的概念,主要用于提高网站访问速度和可靠性。下面我将逐一解释这些术语: 1. 域名(Domain Name&#xff0…

Memcached开发(十三):与其他缓存系统比较

目录 1. Memcached概述 2. Redis 3. Ehcache 4. Hazelcast 5. Couchbase 6. 对比与选择 7. 结论 Memcached是一种高效的内存缓存系统,广泛应用于分布式系统中,以提升数据检索速度,减轻数据库负载。尽管Memcached在许多场景中表现出色&…

【c++】多线程

多线程可以解决什么问题,最重要的用途是什么? 多线程技术在现代软件开发中扮演着至关重要的角色,它可以解决多种问题并带来显著的好处。以下是多线程最重要的几个用途: 资源利用最大化: 多线程可以充分利用多核处理器的能力&…

Linux进程——环境变量之二

文章目录 环境变量查看环境变量获取环境变量main()的第三个参数本地变量全局环境变量内建命令与常规命令 环境变量 查看环境变量 在上一篇文章中我们只说了查看某个环境变量的值,那么如何查看所有的环境变量呢 使用指令env即可 例如 这里我们也不需要全部记住&a…

论文解读:DiAD之SG网络

目录 一、SG网络功能介绍二、SG网络代码实现 一、SG网络功能介绍 DiAD论文最主要的创新点就是使用SG网络解决多类别异常检测中的语义信息丢失问题,那么它是怎么实现的保留原始图像语义信息的同时重建异常区域? 与稳定扩散去噪网络的连接: S…