python 爬虫 入门 五、抓取图片、视频

news2024/10/28 16:23:48

目录

一、图片、音频

二、下载视频:


一、图片、音频

        抓取图片的手法在上一篇python 爬虫 入门 四、线程,进程,协程-CSDN博客里面其实有,就是文章中的图片部分,在那一篇文章,初始代码的28,29行,请求了图片。

img_response = requests.get(img_url) # 下载图片

img_stream = BytesIO(img_response.content)

        可以看出仅仅是将 之前获取文本、源代码的.text换为了.content。如果要保存,我们可以使用:

    with open("xxx.jpg", mode="wb") as f:  # jpeg/jpg/png/换请求到的格式
        f.write(resp.content)

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

        这就不赘述了,抓取音频也很像,这里拿Welcome to the Free Music Archive - Free Music Archive网站做个例子,虽然能直接按钮下载,但咱只学技术。

        打个比方,想下载这个网站的歌曲 但是下载要登录(我没登陆过,不确定登陆后能不能免费下),这个时候就该打开控制台了开始抓包了。通常来说,这种视频、音频的链接都不会开局就加载,而是会在你点击播放时,再向网页请求。

         如果你在网页直接输入这段长长的网址,就能当场播放这段音频,既然如此,我们直接用以下代码就能尝试下载(英语不好,听不懂在说啥。)https://files.freemusicarchive.org/storage-freemusicarchive-org/tracks/3VXD9eyhsZAUy5jjUWLgj3VGXR8ap7x54B6J6Paf.mp3

import requests

url = "https://files.freemusicarchive.org/storage-freemusicarchive-org/tracks/3VXD9eyhsZAUy5jjUWLgj3VGXR8ap7x54B6J6Paf.mp3"
headers = {
    # 用户代理,某些网站验证用户代理,微微改一下,如果提示要验证码之类的,使用它
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome"
                  "/118.0.0.0 Safari/537.36",
}

with requests.get(url=url, headers=headers,) as resp:
    resp.encoding = "utf-8"  # 当页面乱码改这里
    print(resp)
    with open("xxx.mp3", mode="wb") as f:  # 下载源码
        f.write(resp.content)

二、下载视频:

         下载视频的过程与图片和音频大不一样,较短的视频可以使用和上面相同的方法,但是长视频和视频播放网站用的时其他方法,比如https://www.pexels.com/zh-cn/video/3192166/这个网页中的视频就能用上述方法直接拿下,甚至给的就是下载链接。

        因为一段视频可能有几个G大小,用户又可能会拖动进度条。所以,视频通常会被“切片”,一般来说会1~2秒切做一片,通常最大不会超过20s。每个切片都是一个.ts文件,这些文件通过.m3u8文件组合起来,便是我们平常见的视频了。下面拿西游记做个演示:(其他网站差不多)《西游记86版》电视剧第1集完整版在线播放-星辰影院

基本上大部分网站视频都加密,不过问题不大,就是多一步解密而已 ,因此获取视频的步骤就是:

获取m3u8
根据m3u8获取所有ts
解密
组合所有ts,获得mp4

        开工之前,还有一件事,在目录建一个文件夹,并排除他,以作为ts临时目录,被排除的文件夹里面内容的更新不会引起PyCharm的更新。

 正式开工,编写代码:

import asyncio
import os

import aiofiles
import aiohttp
import requests
from Crypto.Cipher import AES  # 解密
from tqdm.asyncio import tqdm_asyncio


def get_m3u8(url, headers):  # 获取m3u8中的所有ts链接
    m3u8_url = url + '/index.m3u8'
    with requests.get(url=m3u8_url, headers=headers, ) as resp:
        resp.encoding = "utf-8"  # 当页面乱码改这里
        m3u8_text = resp.text
    m3u8_text = m3u8_text.split("\n")  # 以回车分割
    m3u8_data = []
    for i in m3u8_text:  # 遍历m3u8,只找非#开头的ts链接,存到m3u8中
        if not (i.startswith('#') or i == ''):
            m3u8_data.append(i)
    return m3u8_data


def get_key(url, headers):  # 获取密钥
    key_url = url + '/enc.key'
    with requests.get(url=key_url, headers=headers, ) as resp:
        resp.encoding = "utf-8"  # 当页面乱码改这里
        key = resp.text
    return key.encode('utf-8')


async def get_ts(url, name, headers, save_path, aes, ts_ok, num):
    async with aiohttp.ClientSession() as session:
        async with session.get(url=url, headers=headers)as resp:
            async with aiofiles.open(save_path + '/' + name, mode='wb')as f:
                await f.write(aes.decrypt(await resp.content.read()))  # 下载ts(顺道解密)
    ts_ok[num] = True


async def get_all_ts(urls, names, headers, path, ts_ok, key):  # 协程下载所有ts
    aes = AES.new(key=key, IV=b'0000000000000000', mode=AES.MODE_CBC)
    tasks = []
    for i in range(len(urls)):
        if not ts_ok[i]:  # 这个没下载呢,添加任务
            tasks.append(asyncio.create_task(get_ts(urls[i], names[i], headers, path, aes, ts_ok, i)))
    for done in tqdm_asyncio.as_completed(tasks):  # 带进度条的显示任务
        await done


def merge_ts(mp4_path, ts_path):  # 组合所有ts为mp4
    path = ts_path + '\\*.ts'
    # os.system(f"cat {path} > {mp4_path}")  # mac使用,其他操作系统查找别的合成ts文件方法
    os.system(f"copy /b {path} {mp4_path}")  # windows使用,其他操作系统查找别的合成ts文件方法
    # 该方法需求保存时,名字按字母排序


if __name__ == "__main__":
    # 获取m3u8===================================================
    data_url = "https://hn.bfvvs.com/play/yb8lN7Wb"
    headers = {
        # 用户代理,某些网站验证用户代理,微微改一下,如果提示要验证码之类的,使用它
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome"
                      "/118.0.0.0 Safari/537.36",
    }
    save_path = "C:\\Users\\86135\\PycharmProjects\\pythonProject\\测试\\test"
    mp4_path = "video.mp4"
    m3u8 = get_m3u8(data_url, headers)
    # sava_names = [url_str.rsplit("/", 1)[-1] for url_str in m3u8]  # 获取按/从最右边分割一次后右边的字符串做文件名]
    sava_names = [f'{i:05d}.ts' for i in range(len(m3u8))]  # 为了合并,保存为00001~00265,以保证字母顺序不变
    enc_key = get_key(data_url, headers)
    all_ts_ok = [False] * len(m3u8)
    loop = asyncio.get_event_loop()
    loop.run_until_complete(get_all_ts(m3u8, sava_names, headers, save_path, all_ts_ok, enc_key))
    print(sum(all_ts_ok) / len(all_ts_ok))
    merge_ts(mp4_path, save_path)

 运行结果,不到半分钟,一段400+MB的视频就下来了。

100%|██████████| 266/266 [00:18<00:00, 14.67it/s]
1.0
C:\Users\86135\PycharmProjects\pythonProject\����\test\00000.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00001.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00002.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00003.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00004.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00005.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00006.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00007.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00008.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00009.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00010.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00011.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00012.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00013.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00014.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00015.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00016.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00017.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00018.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00019.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00020.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00021.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00022.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00023.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00024.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00025.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00026.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00027.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00028.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00029.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00030.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00031.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00032.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00033.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00034.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00035.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00036.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00037.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00038.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00039.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00040.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00041.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00042.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00043.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00044.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00045.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00046.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00047.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00048.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00049.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00050.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00051.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00052.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00053.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00054.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00055.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00056.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00057.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00058.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00059.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00060.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00061.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00062.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00063.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00064.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00065.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00066.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00067.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00068.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00069.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00070.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00071.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00072.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00073.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00074.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00075.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00076.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00077.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00078.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00079.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00080.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00081.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00082.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00083.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00084.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00085.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00086.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00087.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00088.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00089.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00090.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00091.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00092.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00093.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00094.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00095.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00096.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00097.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00098.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00099.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00100.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00101.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00102.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00103.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00104.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00105.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00106.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00107.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00108.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00109.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00110.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00111.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00112.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00113.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00114.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00115.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00116.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00117.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00118.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00119.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00120.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00121.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00122.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00123.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00124.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00125.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00126.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00127.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00128.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00129.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00130.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00131.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00132.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00133.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00134.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00135.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00136.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00137.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00138.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00139.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00140.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00141.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00142.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00143.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00144.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00145.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00146.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00147.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00148.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00149.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00150.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00151.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00152.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00153.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00154.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00155.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00156.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00157.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00158.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00159.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00160.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00161.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00162.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00163.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00164.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00165.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00166.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00167.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00168.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00169.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00170.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00171.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00172.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00173.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00174.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00175.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00176.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00177.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00178.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00179.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00180.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00181.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00182.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00183.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00184.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00185.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00186.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00187.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00188.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00189.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00190.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00191.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00192.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00193.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00194.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00195.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00196.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00197.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00198.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00199.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00200.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00201.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00202.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00203.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00204.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00205.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00206.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00207.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00208.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00209.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00210.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00211.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00212.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00213.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00214.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00215.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00216.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00217.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00218.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00219.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00220.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00221.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00222.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00223.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00224.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00225.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00226.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00227.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00228.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00229.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00230.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00231.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00232.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00233.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00234.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00235.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00236.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00237.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00238.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00239.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00240.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00241.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00242.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00243.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00244.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00245.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00246.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00247.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00248.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00249.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00250.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00251.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00252.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00253.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00254.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00255.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00256.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00257.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00258.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00259.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00260.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00261.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00262.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00263.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00264.ts
C:\Users\86135\PycharmProjects\pythonProject\����\test\00265.ts
�Ѹ���         1 ���ļ���

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

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

相关文章

Python 函数返回值之None类型

什么是None None是类型‘NoneType’字面量&#xff0c;用于表示&#xff1a;空的、无意义的 函数如何返回None 不使用return语句即返回None 主动return None 使用场景 函数返回值if判断变量定义 练习&#xff1a; 练习一&#xff1a;无return语句的函数返回值 # 无ret…

Docker | centos7上对docker进行安装和配置

安装docker docker配置条件安装地址安装步骤2. 卸载旧版本3. yum 安装gcc相关4. 安装需要的软件包5. 设置stable镜像仓库6. 更新yum软件包索引7. 安装docker引擎8. 启动测试9. 测试补充&#xff1a;设置国内docker仓库镜像 10. 卸载 centos7安装docker https://docs.docker.com…

交易逆序对的总数 ---- 分治-归并

题目链接 题目: 分析: 解法一: 暴力解法, 遍历所有的数对, 找到逆序对, 需要两重for循环, 一定会超时解法二: 归并排序的思想如果我们将数组分成两半, 我们在每一半中各找一个数字, 判断是否为逆序对, 再根据归并的思想, 再将一半数组分半, 判断是否为逆序对, 直到数组只有一…

合约门合同全生命周期管理系统:企业智能合同管理的新时代

合约门合同全生命周期管理系统&#xff1a;企业智能合同管理的新时代 1. 引言 随着现代企业的快速发展&#xff0c;合同管理的复杂性日益增加。无论是采购合同、销售合同还是合作协议&#xff0c;合同管理已成为企业运营中至关重要的一环。传统的手工合同管理方式往往效率低下…

WISE:重新思考大语言模型的终身模型编辑与知识记忆机制

论文地址&#xff1a;https://arxiv.org/abs/2405.14768https://arxiv.org/abs/2405.14768 1. 概述 随着世界知识的不断变化&#xff0c;大语言模型&#xff08;LLMs&#xff09;需要及时更新&#xff0c;纠正其生成的虚假信息或错误响应。这种持续的知识更新被称为终身模型编…

Colorful/七彩虹将星X17 Pro Max 2023款 Win11原厂OEM系统 带COLORFUL一键还原

安装完毕自带原厂驱动和预装软件以及一键恢复功能&#xff0c;自动重建COLORFUL RECOVERY功能&#xff0c;恢复到新机开箱状态。 【格式】&#xff1a;iso 【系统类型】&#xff1a;Windows11 原厂系统下载网址&#xff1a;http://www.bioxt.cn 注意&#xff1a;安装系统会…

网页上的视频怎么下载下来?三种方法

分享三个简单好用的网页视频下载工具&#xff0c;值得使用&#xff01; 1.IDM IDM 是一款可以提高下载速度达5倍的工具&#xff0c;同时具有恢复、调度和组织下载的功能。如果由于网络问题或意外的电源中断&#xff0c;程序将恢复未完成的下载。 IDM 还具有一个完全功能的站点…

Redis 过期策略 总结

前言 相关系列 《Redis & 目录》&#xff08;持续更新&#xff09;《Redis & 过期策略 & 源码》&#xff08;学习过程/多有漏误/仅作参考/不再更新&#xff09;《Redis & 过期策略 & 总结》&#xff08;学习总结/最新最准/持续更新&#xff09;《Redis &a…

【SpringBoot】✈️@Service 代替 @Controller 在控制层场景使用

目录 &#x1f378;前言 &#x1f44b;一、区别 &#x1f37b;二、本地测试 2.1 响应类 2.2 控制层 3.Service 测试 &#x1f37a;三、分析 &#x1f440;四、章末 &#x1f378;前言 小伙伴们大家好&#xff0c;由于最近比较忙&#xff0c;文章更新的稍微怠慢了&#xff0…

leetcode-62-不同路径

题解&#xff1a; 1、dp[i][j]代表到达(i,j)点最多的路径&#xff1b;题目要求机器人每次只能向右或向下走一步&#xff0c;所以到达(i,j)点的最多路径为到达(i-1,j)的最多路径与到达(i,j-1)的最多路径之和。即dp[i][j]dp[i-1][j]dp[i][j-1]。 2、当(i,j)位于矩阵的第一行或第…

rabbitmq高级特性(1):消息确认,持久性,发送方确认和重试机制

目录 1.消息确认机制 1.1.消息确认机制介绍 2.1.Spring-AMQP的三种消息确认&#xff08;重点&#xff09; 2.持久性 2.1.交换机持久性 2.2.队列持久性 2.3.消息持久性 3.发送方确认 3.1.confirm确认模式 3.2.return退回模式 4.重试机制 4.1.重试机制定义 4.2.重试…

Padavan开启IPV6

开户IPV6 如果运营商支持IPV6&#xff0c;在网络地图中可以看到获取到的ipv6地址 开启SSH 输入如下命令让访火墙放行IPV6 ip6tables -F ip6tables -X ip6tables -P INPUT ACCEPT ip6tables -P OUTPUT ACCEPT ip6tables -P FRWARD ACCEPT 可以写在自启动脚本里 关闭路由器的防…

CH592进一步降功耗问题

目录 问题描述&#xff1a; 自制模块电流测试&#xff1a; 成熟产品电流测试&#xff1a; 优化程序&#xff1a; 总结&#xff1a; 关注我&#xff0c;躺不平就一起卷吧 问题描述&#xff1a; 之前有记录过&#xff0c;CH592与app连接时电流过大问题&#…

群控系统服务端开发模式-应用开发-业务架构逻辑开发BaseAPI

一、加密工具开发 首先在根目录下extend文件中创建Encipher文件夹&#xff0c;用于专门开发加解密工具&#xff0c;新建RSA算法控制器并命名为Encrypt.php。然后在根目录下config文件夹中创建rsa.php文件&#xff0c;用于配置RSA算法参数。 1、秘钥生成算法 <?php /*** RS…

聚类分析算法——K-means聚类 详解

K-means 聚类是一种常用的基于距离的聚类算法&#xff0c;旨在将数据集划分为 个簇。算法的目标是最小化簇内的点到簇中心的距离总和。下面&#xff0c;我们将从 K-means 的底层原理、算法步骤、数学基础、距离度量方法、参数选择、优缺点 和 源代码实现 等角度进行详细解析。…

web3.0 开发实践

优质博文&#xff1a;IT-BLOG-CN 一、简介 Web3.0也称为去中心化网络&#xff0c;是对互联网未来演进的一种概念性描述。它代表着对现有互联网的下一代版本的设想和期望。Web3.0的目标是通过整合区块链技术、分布式系统和加密技术等新兴技术&#xff0c;构建一个更加去中心化…

[C++11] 右值引⽤与移动语义

文章目录 左值和右值左值&#xff08;Lvalue&#xff09;右值&#xff08;Rvalue&#xff09;区别 左值引⽤和右值引⽤左值引用&#xff08;Lvalue Reference&#xff09;右值引用&#xff08;Rvalue Reference&#xff09;右值引用的特点 右值引用延长生命周期右值引⽤和移动语…

【开源免费】基于SpringBoot+Vue.JS在线文档管理系统(JAVA毕业设计)

本文项目编号 T 038 &#xff0c;文末自助获取源码 \color{red}{T038&#xff0c;文末自助获取源码} T038&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

Redis 线程控制 总结

前言 相关系列 《Redis & 目录》&#xff08;持续更新&#xff09;《Redis & 线程控制 & 源码》&#xff08;学习过程/多有漏误/仅作参考/不再更新&#xff09;《Redis & 线程控制 & 总结》&#xff08;学习总结/最新最准/持续更新&#xff09;《Redis &a…