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字节,下载不正常,求大佬指教 猜测:对方拒绝了你的请求并向你抛出了一个403 楼上有道理。 殇情 发表于 2020-5-15 21:28
猜测:对方拒绝了你的请求并向你抛出了一个403
是404!!!!! 楼主,我也曾经是出现和你一样的问题,但是我是在C#语言上找到答案的,每一个m3u8单独视频地址,他的视频地址貌似不存在特别符号,然后循环上去,会发现每个地址会多出现一个换行符,但是表面看上去这个地址是没有问题,你放到网页的搜索栏上发现这个地址会出现一个空格的,因为m3u8地址分割出来后是需要自已拼装地址上去的,所以就是这个子文本替换出现了一个问题,符号没给你处理好,这个是C#语言和易语言都会出现一个这样的问题,这个PY爬虫应该也是这个问题 做一个 if response.status_code==200: 判断
如果不是多线程,估计就是只能单线程下载 fanvalen 发表于 2020-5-15 21:52
做一个 if response.status_code==200: 判断
如果不是多线程,估计就是只能单线程下载
在for循环中,返回的都是404,不存在200,单独下载一个就有200 Cellluo 发表于 2020-5-15 21:54
在for循环中,返回的都是404,不存在200,单独下载一个就有200
我突然想到你是不是没加headers,被据了 fanvalen 发表于 2020-5-15 21:56
我突然想到你是不是没加headers,被据了
加了,也没用 dongdiyu789 发表于 2020-5-15 21:48
楼主,我也曾经是出现和你一样的问题,但是我是在C#语言上找到答案的,每一个m3u8单独视频地址,他的视频地 ...
如果是网址的问题的话,单独下载一个应该不成功,但我单独下载一个是可以成功的
页:
[1]
2