Cellluo 发表于 2020-5-15 21:03

Python 下载m3u8视频问题

本帖最后由 Cellluo 于 2020-5-15 21:06 编辑

```
def download(url, root_path):
    # ts_url = ts_urls
    file_name = url.split("/")[-1]
    print("开始下载 %s" % file_name)
    start = datetime.datetime.now().replace(microsecond=0)
    try:
      response = requests.get(url, stream=True, verify=False)
    except Exception as e:
      print("异常请求:%s" % e.args)
      return
    with open(file_name, "wb+") as file:
      for chunk in response.iter_content(chunk_size=1024):
            if chunk:
                file.write(chunk)
    end = datetime.datetime.now().replace(microsecond=0)
    print("耗时:%s" % (end-start))

for index, m3u8_url in enumerate(all_urls):
      print(m3u8_url)
      file_name = '/Users/nianfouyi/Desktop/test/'+str(index)+'.ts'
      download(m3u8_url, file_name)
      time.sleep(5)
      print("OK")
      
      
```
      单独调用这个函数下载m3u8视频的每个.ts视频,下载下来就是正常的,如果用for 循环的话,每个.ts只有166字节,下载不正常,求大佬指教

殇情 发表于 2020-5-15 21:28

猜测:对方拒绝了你的请求并向你抛出了一个403

hjlost 发表于 2020-5-15 21:35

楼上有道理。

Cellluo 发表于 2020-5-15 21:37

殇情 发表于 2020-5-15 21:28
猜测:对方拒绝了你的请求并向你抛出了一个403

是404!!!!!

dongdiyu789 发表于 2020-5-15 21:48

楼主,我也曾经是出现和你一样的问题,但是我是在C#语言上找到答案的,每一个m3u8单独视频地址,他的视频地址貌似不存在特别符号,然后循环上去,会发现每个地址会多出现一个换行符,但是表面看上去这个地址是没有问题,你放到网页的搜索栏上发现这个地址会出现一个空格的,因为m3u8地址分割出来后是需要自已拼装地址上去的,所以就是这个子文本替换出现了一个问题,符号没给你处理好,这个是C#语言和易语言都会出现一个这样的问题,这个PY爬虫应该也是这个问题

fanvalen 发表于 2020-5-15 21:52

做一个 if response.status_code==200: 判断

如果不是多线程,估计就是只能单线程下载

Cellluo 发表于 2020-5-15 21:54

fanvalen 发表于 2020-5-15 21:52
做一个 if response.status_code==200: 判断

如果不是多线程,估计就是只能单线程下载

在for循环中,返回的都是404,不存在200,单独下载一个就有200

fanvalen 发表于 2020-5-15 21:56

Cellluo 发表于 2020-5-15 21:54
在for循环中,返回的都是404,不存在200,单独下载一个就有200

我突然想到你是不是没加headers,被据了

Cellluo 发表于 2020-5-15 22:03

fanvalen 发表于 2020-5-15 21:56
我突然想到你是不是没加headers,被据了

加了,也没用

Cellluo 发表于 2020-5-15 22:10

dongdiyu789 发表于 2020-5-15 21:48
楼主,我也曾经是出现和你一样的问题,但是我是在C#语言上找到答案的,每一个m3u8单独视频地址,他的视频地 ...

如果是网址的问题的话,单独下载一个应该不成功,但我单独下载一个是可以成功的
页: [1] 2
查看完整版本: Python 下载m3u8视频问题