Python爬虫掌握-----4实战(爬取视频)

我们使用爬虫时难免会遇到爬取视频的情况,其实爬取图片视频,内容都是一样的。这里以b站视频为例。

一、开始

1.找到url,请求url

防盗链,需要写在UA伪装中

正常的三步:

1.url

2.requests请求

3.UA伪装

import requestsif __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/"}url = "https://www.bilibili.com/video/BV17H4y1A7md/?t=9&spm_id_from=333.1007.tianma.2-1-4.click&vd_source=37cc0b6d243b986a7d9f55081d429fcb"requests.get(url,headers=head)pass

2.找到所需数据地址,获取它。

b站的视频有点特殊,视频和声频是分开的,我们需要分别爬取,我们通过正常的爬取是无法爬取到b站视频的直接通过视频地址是爬取不到的。所以我们需要分别找到视频和音频的地址。

在head里找到这个window__playinfo__获取它,从中提取视频和音频的url请求获取即可:保存到文件中

import requests
import json
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/"}url = "https://www.bilibili.com/video/BV17H4y1A7md/?t=9&spm_id_from=333.1007.tianma.2-1-4.click&vd_source=37cc0b6d243b986a7d9f55081d429fcb"response = requests.get(url, headers=head)res_text = response.text# 数据解析tree = etree.HTML(res_text)# 去掉开头的window.__playinfo__=base_info = "".join(tree.xpath("/html/head/script[4]/text()"))[20:]info_dict = json.loads(base_info)print(base_info)video_url = info_dict["data"]["dash"]['video'][0]["baseUrl"]audio_url = info_dict["data"]["dash"]['audio'][0]["baseUrl"]video_content = requests.get(video_url,head).contentaudio_content = requests.get(audio_url,head).contentwith open("video.mp4","wb") as f:f.write(video_content)with open("audio.mp4", "wb") as fp:fp.write(audio_content)pass

视频的爬取实际上不难,只是在不停的寻找所需的地址,请求并储存。

牢记爬虫注意事项:

  1. 遵守网站的robots.txt文件: robots.txt 是网站所有者用来控制搜索引擎爬取其网站内容的标准。爬虫在开始抓取网页之前应该检查 robots.txt 文件,并遵守其中规定的限制和指示。尊重robots.txt 是一种网络礼节,也有助于避免法律纠纷和封禁。

  2. 不过度请求网站: 爬虫应该尽量模拟人类访问行为,避免过于频繁或过度的请求。频繁地请求同一个页面或者短时间内大量请求会给服务器造成负担,并可能被视为恶意行为。

  3. 尊重隐私和版权: 爬取的内容可能包含用户数据和受版权保护的内容。在爬取和使用这些数据时,必须遵循隐私保护法律和版权法规。特别是在商业用途中,可能需要得到网站所有者的许可。

  4. 避免爬取敏感信息: 不应该爬取包含个人身份信息或其他敏感数据的页面,除非有明确的法律依据和用户许可。

  5. 设置合理的爬取速率和间隔: 设置适当的爬取速率和请求间隔,以避免给目标网站的服务器带来过大的负载。通常建议使用随机化间隔和分布,以模仿真实用户的访问模式。

  6. 处理错误和异常情况: 爬虫应该能够处理网站返回的错误码和其他异常情况,例如重定向、服务器错误等。合理的错误处理可以提高爬虫的效率和稳定性。

  7. 遵守法律和规定: 不同国家和地区对网络爬虫有不同的法律规定和限制,特别是涉及数据隐私和网络安全方面的法律。使用爬虫时务必遵守当地的法律法规。

网络爬虫是一种强大的工具,但在使用时需要谨慎行事,遵循良好的道德和法律标准,以避免对网络生态系统和个人权利造成损害。

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

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

相关文章

docker基于外部缓存加速构建方案

开启外部缓存 http://your_apt_cacher_ng_server:3142 是一个示例 URL,表示需要设置的 apt-cacher-ng 代理服务器的地址。apt-cacher-ng 是一个本地代理服务器,可以缓存从官方 APT 仓库下载的软件包,从而加速后续的下载过程,并减…

linux c 递归锁的介绍

递归锁的递归特性确实只是对于持有锁的线程。当一个线程获取了递归锁后,它可以多次重复获取该锁,而不会导致自身阻塞或死锁。这是递归锁的重要特点,它允许同一个线程在已经持有锁的情况下,再次获取相同的锁。 然而,对…

Zabbix基本介绍

文章目录 一、监控为什么需要监控需要监控什么Zabbix使用场景及系统概述zabbix介绍Zabbix功能Zabbix架构Zabbix术语 二、部署安装编译安装 一、监控 为什么需要监控 监控功能 在需要的时刻,提前预警即将出问题,避免故障发生。实时监控系统和业务,当出问题之后&am…

在本地远程访问云Linux服务器部署的tomcat管理控制台

样例: 我们将创建一个 SSH 隧道,将本地计算机的端口映射到远程服务器的端口,以达到在本地的windows系统中访问云Linux中tomcat的管理控制台的目的 1.打开终端,输入以下字段 ssh -L 8080:localhost:8080 userserver_ip 其中各项代表的值为: -L [local_port]:[remo…

Android11 framework 禁止三方应用通过广播开机自启动-独立方案

之前的文章Android11 framework 禁止三方应用开机自启动记录了我调试Android11应用自启动限制的全过程,但是之前的方案感觉还能再研究,所以有了这一篇文章。 这一篇文章主要探讨Android11上,以广播来进行自启动的应用的限制,极个别…

数据库安全:MySQL安全配置,MySQL安全基线检查加固

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们需…

Java中的字符串类型——String

字符串类型 不可变类型:一旦创建,值就不会改变fianl修饰类不能继承,不能被重写,修饰char类型后,地址不可变,内容可变,没有具体方法修改内容,保证不可变性 常用方法 长度&#xff…

(十七)原生js案例之h5中的几个特性记录

h5 中的新特性 语义化标签增强型表单元素选择器 querySelectorquerySelectorAllgetElementsByClassName class 的操作 classList.addclassList.removeclassList.toggleclassList.containsclassList.replace JSON JSON.stringifyJSON.parseeval 可以解析任何字符串变成 jspares…

配置Linux客户端免密登录服务端Linux主机的root用户

1.安装shh服务 首先安装shh服务,redhat端通过下面代码进行安装服务 sudo yum install sshd sudo yum install openssh-server 2.生成密钥(公钥+私钥) 执行ssh-keygen命令,会生成id_rsa(私钥&#xff0…

【ffmpeg命令入门】再论ffmpeg通用选项

文章目录 前言强制使用特定的文件格式1. 将 MP4 文件转换为 AVI 格式2. 录制音频3. 从摄像头录制视频 指定输入文件覆盖同名文件限制输入/输出文件的时间指定结束点时间主要区别举例说明1. 使用 -t 截取前 10 秒的视频2. 使用 -to 截取到第 10 秒的视频 实际应用中的区别1. 从第…

并发编程--synchronized介绍

1.初步认识synchronized 先来看下利用 synchronized 实现 同步的基 础 : Java 中的每一个 对 象都可以作 为锁 。具体表 现 为 以下 3 种形式。 : 对于普通同步方法, 锁 是当前 实 例 对 象。 对于静 态 同步方法, 锁 是当前 类…

python-首字母移位(PythonTip)

[题目描述] 编写一个程序,将句子中每个单词的首字母移位到下一个单词。定义函数shift_first_letter(),参数为sentence(字符串)。在函数内,将句子中每个单词的首字母移位到下一个单词。最后一个单词的首字母移位到句子的…

python进阶---闭包与装饰器

一、闭包 在Python中,闭包是指一个函数内部定义的函数,这个内部函数可以访问并修改其外部函数的局部变量,即使外部函数已经执行完毕。闭包可以通过多层函数嵌套来实现。 闭包的三要素: 1、外部函数嵌套内部函数 2、外部函数返回内…

SQL 注入漏洞详解 - Union 注入

1)漏洞简介 SQL 注入简介 SQL 注入 即是指 Web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 Web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,…

罗技 F710 无线游戏手柄用户指南

罗技 F710 无线游戏手柄用户指南 Gamepad F710功能系统XInput 游戏DirectInput的 游戏1.左键/触发器按钮为数字; 触发器是模拟的按钮和触发器是数字的和可编程的*2.右键/触发器按钮为数字; 触发器是模拟的按钮和触发器是数字的和可编程的*3.方向键8 向方…

记录|C#+winform创建扁平化风格界面

本项目的C#内容是自己跟做的,自己做的内容已经打包,可以通过自己跟做写的Dashboard界面,C#下的winform模式下载获得,但是需要花费3个积分 目录 前言一、左边设置和步骤界面步骤Step1.Step2.Step3.Step4Step5 二、右边属性和步骤属…

【BUG】已解决:ModuleNotFoundError: No module named ‘requests‘

ModuleNotFoundError: No module named ‘requests‘ 目录 ModuleNotFoundError: No module named ‘requests‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身&a…

Django已经登录但是还是提示登录

问题描述 在使用 Django 开发网站时,你可能会遇到一个问题:当用户在访问网站时,如果 URL 从 https://200sm.com/chat/ 切换到 https://www.200sm.com/chat/,用户可能会被要求重新登录或遇到其他验证问题。这是因为 Django 默认情…

Python怎样读取URL生成PDF

1. 安装依赖的exe 需要在这个网址,安装一个exe包,地址:https://wkhtmltopdf.org/ 进入网址后,点这个位置: 选择一个你的操作系统的下载链接: 安装后的exe文件: C:\Program Files\wkhtmltopdf…

vue3.2使用@wangeditor/editor-for-vue实现富文本编辑器,后端使用thinkphp上传图片

Vue 组件代码 npm i wangeditor/editor-for-vue<template><div style"border: 1px solid #ccc;height:600px;"><Toolbar style"border-bottom: 1px solid #ccc" :editor"editorRef" :defaultConfig"toolbarConfig" :m…