python的for遍历循环之后为什么只能保存最后一个request url的内容?

python小白想用python爬取下载一批ts文件,过程如下

import requests

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36'}

kv = {'dnvodendtime': '1624040106', 'dnvodhash': 'HQGimsbqmJMuCKc05eipntdLrUI-I5Iw4pOKqfHEyAI=','dnvodCustomParameter': '0_202.133.213.38', 'lb':'b45065ee7d604a2a2a2ecf17bf29988e'}

for i in range(10, 13):
    media_url = 'https://hss7-s1.dnvodcdn.me/ppot/_definst_/mp4:s7/vod/lxj-astzb22-   024BF8FC4.mp4/media_' + '%02d' % (i) + '.ts'
    r=requests.get(media_url, headers=headers, params=kv)
    with open("视频.ts",mode='wb') as f:
         f.write(r.content)
        

测试过用for in range函数可以成功遍历那3个文件所在的URL,但是最后一步保存的时候却只能得到一个视频(遍历顺序为最后一个)是为什么呀?

要把with open("视频.ts",mode='wb') as f:放 for i in range(10, 13):外面,

先创建视频.ts文件,然后循环多次往文件中写入内容。

你那样把with open("视频.ts",mode='wb') as f:放 for i in range(10, 13):里面,

每次循环都会重新创建一个新的视频.ts文件,每次都把上一次创建的视频.ts文件覆盖掉了。

import requests
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36'}
kv = {'dnvodendtime': '1624040106', 'dnvodhash': 'HQGimsbqmJMuCKc05eipntdLrUI-I5Iw4pOKqfHEyAI=','dnvodCustomParameter': '0_202.133.213.38', 'lb':'b45065ee7d604a2a2a2ecf17bf29988e'}
with open("视频.ts",mode='wb') as f:
    for i in range(10, 13):
        media_url = 'https://hss7-s1.dnvodcdn.me/ppot/_definst_/mp4:s7/vod/lxj-astzb22-   024BF8FC4.mp4/media_' + '%02d' % (i) + '.ts'
        r=requests.get(media_url, headers=headers, params=kv)
        f.write(r.content)

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m