爬虫前面下载900个然后报错

#  1. 获取iframe里的m3u8地址
#  2.下载第一个m3u8,从第一个m3u8地址里获取第二个m3u8
#  3.下载视频
#  4. 解密
#  5. 合并视频
import asyncio

import aiofiles
import aiohttp
import requests
from bs4 import BeautifulSoup


def get_url_m3u8_first(url):
    url_first_req = requests.get(url)
    url_first_bs = BeautifulSoup(url_first_req.text, 'html.parser')
    url_first_req.close()
    return url_first_bs.find('iframe').get('data-play')


def get_m3u8_ts(url, layer, collection):
    m3u8_first_ts_req = requests.get(url)
    with open(f'../备份文件夹/协程_综合训练2/{layer}/第{collection}集.txt', mode='wb') as f:
        f.write(m3u8_first_ts_req.content)


async def down_m3u8_second(url, name, session):
    async with session.get(url) as down_m3u8_req:
        async with aiofiles.open(f'../备份文件夹/协程_综合训练2/video/{name}', mode='wb') as f:
            await f.write(await down_m3u8_req.content.read())
    print(f'{name}下载完毕!')


async def m3u8_second_read(main_url, layer):
    tasks = []
    async with aiohttp.ClientSession() as session:
        async with aiofiles.open(f'../备份文件夹/协程_综合训练2/第二层/第{layer}集.txt', mode='r', encoding='utf-8') as f:
            async for line in f:
                if str(line).startswith('#'):
                    continue
                else:
                    line = str(line).strip()
                    url_m3u8_second = main_url + line
                    names = line.split('/')[-1]
                    tasks.append(asyncio.create_task(down_m3u8_second(url_m3u8_second, names, session)))
            await asyncio.wait(tasks)


def main(url, collection):
    # 第一层m3u8的url
    url_m3u8_first = get_url_m3u8_first(url)
    # 下载第一层的m3u8文件
    get_m3u8_ts(url_m3u8_first, '第一层', collection)
    # 获取第二层地址>>>>https://v7.dious.cc/20220801/l4CNv2DR/1500kb/hls/index.m3u8
    with open(f'../备份文件夹/协程_综合训练2/第一层/第{collection}集.txt', mode='r', encoding='utf-8') as f:
        url_m3u8_second = url_m3u8_first.split('/20220801')[0] + f.readlines()[-1].strip()
    # 下载第二层的m3u8文件
    get_m3u8_ts(url_m3u8_second, '第二层', collection)
    #  读取第二层m3u8文件,并且拼接域名
    asyncio.run(m3u8_second_read(url_m3u8_first.split('/20220801')[0], collection))


if __name__ == '__main__':
    coll = 1
    url_first = f'http://www.klz-toy.com/vodplay/yunhebianderenmen/2-{coll}.html'
    main(url_first, coll)


报错信息

img


img

你设置代理试试