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

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

一、开始

1.找到url,请求url

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

正常的三步:

1.url

2.requests请求

3.UA伪装

python 复制代码
import requests


if __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请求获取即可:保存到文件中

python 复制代码
import requests
import json
from lxml import etree

if __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).content
    audio_content = requests.get(audio_url,head).content
    with 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. 遵守法律和规定: 不同国家和地区对网络爬虫有不同的法律规定和限制,特别是涉及数据隐私和网络安全方面的法律。使用爬虫时务必遵守当地的法律法规。

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

相关推荐
计算机毕设残哥30 分钟前
大数据毕业设计选题推荐:护肤品店铺运营数据可视化分析系统详解
大数据·信息可视化·课程设计
抠头专注python环境配置1 小时前
OCR库pytesseract安装保姆级教程
python·ocr·conda
山烛1 小时前
矿物分类系统开发笔记(二):模型训练[删除空缺行]
人工智能·笔记·python·机器学习·分类·数据挖掘
大得3692 小时前
django生成迁移文件,执行生成到数据库
后端·python·django
大志说编程2 小时前
LangChain框架入门17: 手把手教你创建LLM工具
python·langchain·ai编程
R-G-B2 小时前
【P38 6】OpenCV Python——图片的运算(算术运算、逻辑运算)加法add、subtract减法、乘法multiply、除法divide
人工智能·python·opencv·图片的运算·图片加法add·图片subtract减法·图片乘法multiply
数据智能老司机2 小时前
MCP 实战——全局视角:为什么 MCP 将成为 AI 的颠覆者
python·llm·mcp
在星空下2 小时前
Fastapi-Vue3-Admin
前端·python·fastapi
cxyll12343 小时前
从接口自动化测试框架设计到开发(三)主流程封装、返回数据写入excel
前端·python·excel
Kyln.Wu3 小时前
【python实用小脚本-190】Python一键删除PDF任意页:输入页码秒出干净文件——再也不用在线裁剪排队
服务器·python·pdf