51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1429|回复: 4
打印 上一主题 下一主题

关于爬取电影过程中,下载步骤报错的问题?

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:47
  • 签到天数: 528 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    #
    发表于 2021-10-18 10:21:46 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    1测试积点

    问题具体就是:在爬取一个网站的过程中,进程是已经爬取到了视频的m3u8文件;准备对文件里面的每一段m3u8文件链接进行下载,写完下载流程后开始报错,望指教?

    问题截图:

    以下为代码块,只放出来出问题部分的函数

    1. #2.5.1、子程序:异步协程进行下载
    2. async def download_ts(url,name,session):
    3.     async with session.get(url)as resp:
    4.         async with aiofiles.open(f'4.9-video2/{name}',mode='wb')as f:
    5.             await f.write(await resp.content.read())  #把下载到的内容写入文件中
    6.     print(f'{name}下载完毕')

    7. #2.5、子程序:异步协程处理下载
    8. async def aio_download(up_url):
    9.     tasks=[]
    10.     async with aiohttp.ClientSession() as session:
    11.         async with aiofiles.open('4.93-抓取91看剧复杂版——second-m3u8.txt',mode='r',encoding='utf-8')as f:
    12.             async for line in f:
    13.                 if line.startswith('#'):  #’#‘开头的行不要
    14.                     continue
    15.                 # line就是xxxx.ts文件
    16.                 url = line.strip()  # 去掉没用的空格和换行
    17.                 name=line.rsplit('/',1)[1]
    18.                 task=asyncio.create_task(download_ts(url,name,session))
    19.                 tasks.append(task)
    20.             await asyncio.wait(tasks)  #等待任务结束

    21. #主程序
    22. def main(url):
    23.     #2.1、找到主页面的源代码,找到iframe对应的url
    24.     iframe_src=get_iframe_src(url)
    25.     #print(iframe_src)
    26.     #2.3下载第一层m3u8文件
    27.     download_m3u8_file(iframe_src,'4.93-抓取91看剧复杂版——first-m3u8.txt')  #按照课程正常的话括号里的’iframe_src‘要改为2.2里的’first_m3u8_url_ture‘
    28.     #2.4下载第二层m3u8文件
    29.     with open('4.93-抓取91看剧复杂版——first-m3u8.txt',mode='r',encoding='utf-8') as f:
    30.         for line in f:
    31.             if line.startswith('#'):  #让程序识别文件里面时,自动跳过‘#’开头的行段
    32.                 continue
    33.             else:
    34.                 line=line.strip()  #去掉空白或者换行符
    35.                 #准备拼接第二层m3u8的下载路径
    36.                 second_m3u8_url=iframe_src.split('/20210730')[0]+line
    37.                 download_m3u8_file(second_m3u8_url,'4.93-抓取91看剧复杂版——second-m3u8.txt')
    38.                 print('第二层m3u8下载完毕')

    39.     #2.5下载视频
    40.     up_url='开始'
    41.     asyncio.run(aio_download(up_url))

    42. #1、主程序调用处
    43. if __name__=='__main__':
    44.     url='https://www.pianba.net/yun/84961-1-1/'
    45.     main(url)
    复制代码


    附件: 您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    9 小时前
  • 签到天数: 993 天

    连续签到: 2 天

    [LV.10]测试总司令

    4#
    发表于 2021-10-19 16:04:38 | 只看该作者
    人家网站设置了防爬机制了吧
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 2814 天

    连续签到: 2 天

    [LV.Master]测试大本营

    3#
    发表于 2021-10-19 15:47:22 | 只看该作者
    看着是参数保持,可以对比一下看看
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    8 小时前
  • 签到天数: 1518 天

    连续签到: 2 天

    [LV.Master]测试大本营

    2#
    发表于 2021-10-19 10:53:43 | 只看该作者
    应该是有防爬机制的
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    9 小时前
  • 签到天数: 1803 天

    连续签到: 2 天

    [LV.Master]测试大本营

    1#
    发表于 2021-10-19 09:16:02 | 只看该作者
    非法参数
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-19 18:37 , Processed in 0.067840 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表