EASY PYTHON SELENIUM:如何在不使用 urllib 的情况下下载 mp4?

EASY PYTHON SELENIUM: How do I download an mp4 WITHOUT using urllib?

我正在尝试下载此视频:https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4

我尝试了以下但它不起作用。

link = "https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4"
urllib.request.urlretrieve(link, 'video.mp4')

我得到:

urllib.error.HTTPError: HTTP Error 403: Forbidden

是否有另一种不使用 urllib 下载 mp4 文件的方法?

我用模块requests下载没有问题

import requests

url = 'https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4'

response = requests.get(url)

with open('video.mp4', 'wb') as f:  # use `"b"` to open in `bytes mode`
    f.write(response.content)       # use `.content` to get `bytes`

这是一个小文件~10MB,但对于更大的文件,您可以分块下载。

import requests

url = 'https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4'

response = requests.get(url, stream=True)

with open('video.mp4', 'wb') as f:
    for chunk in response.iter_content(10000):  # 10_000 bytes
        if chunk:
            #print('.', end='')  # every dot will mean 10_000 bytes 
            f.write(chunk)

文档显示 Streaming Requests 但对于文本数据。


url 是一个 string,因此您可以使用 string 函数在最后一个 /

之后获取元素
filename =  url.split('/')[-1]

或者您可以尝试使用 os.path

至少它适用于 Linux - 可能是因为 Linux 也在本地路径中使用 /

import os

head, tail = os.path.split(url)

# head: 'https://www.learningcontainer.com/wp-content/uploads/2020/05'
# tail: 'sample-mp4-file.mp4'