51Testing软件测试论坛

标题: 关于爬取电影过程中,下载步骤报错的问题? [打印本页]

作者: 测试积点老人    时间: 2021-10-18 10:21
标题: 关于爬取电影过程中,下载步骤报错的问题?

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

问题截图:

[attach]134819[/attach]

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

  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)
复制代码



作者: 海海豚    时间: 2021-10-19 09:16
非法参数
作者: qqq911    时间: 2021-10-19 10:53
应该是有防爬机制的
作者: jingzizx    时间: 2021-10-19 15:47
看着是参数保持,可以对比一下看看
作者: litingting0214    时间: 2021-10-19 16:04
人家网站设置了防爬机制了吧




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2