Python -> 从网络文件夹获取所有有效的媒体下载网址

问题描述 投票:0回答:3

我这里有一个网站,其链接结构如下

https://example.com/assets/contents/1627347928.mp4
python file web-scraping python-requests download
3个回答
0
投票

打印文件是否存在

import requests
names = [ 1627347923, 1627347924, 1627347925]
base = 'https://example.com/assets/contents/{}.mp4'

for item in names:
    link = base.format(item)
    print(link)
    r = requests.head(link, allow_redirects=True)
    if r.status_code == 200:
        print("found {}.mp4".format(item))
        #open('{}.mp4'.format(item), 'wb').write(r.content)
    else:
        print("File no found or error getting headers")

或者尝试下载

import requests
names = [ 1627347923, 1627347924, 1627347925]
base = 'https://example.com/assets/contents/{}.mp4'
for item in names:
    link = base.format(item)
    print(link)
    # uncomment below to download
    #r = requests.get(link, allow_redirects=True)
    #open('{}.mp4'.format(item), 'wb').write(r.content)

0
投票

是的,你可以运行一个循环,检查状态代码,或者如果 requests.get() 抛出一个错误,你会返回并因此获取所有文件,但是有一些问题可能会阻止你选择它

  1. 您的文件格式为“1627*****.mp4”,这意味着 for 循环将检查 10^6 个条目,如果所有 * 都是数字,效率不高。如果您打算包含字符和特殊字符,效率会非常低。

  2. 如果将来你有超过 10^6 个文件怎么办?您的格式必须更改,因此您的代码也必须更改。

一个更简单、直接和高效的解决方案是有一个地方来存储您的数据、文件或更好的数据库,您可以在其中查询并获取所有文件。您只需运行查询即可获取必要的详细信息。

此外,404 错误意味着找不到您尝试访问的页面,在您的情况下,它本质上意味着它不存在。

用于检查链接是否存在的示例代码a/c

files = []
links = ["https://www.youtube.com/","https://docs.python.org","https://qewrt.org"]

for i in links:
    try:
        requests.get(i) // If link doesnt exists, it throws an error, else the link is appended to the files list
        files.append(i)
    except:
        print(i+" doesnt exist")
print(files)

在此基础上,根据您的情况,检查所有文件是否以给定格式存在:

import requests

file_prefix = 'https://example.com/assets/contents/1627'

file_lists = []
for i in range(10**6):
    suffix = (6-len(str(i)))*"0"+str(i)+".mp4"
    file_name = file_prefix+suffix
    try:
        requests.get(file_name)
        file_lists.append(file_name)
    except:
        continue
for i in file_lists:
    print(i)

0
投票

根据您的所有代码和LMC代码,我做了一件测试所有MP4文件并向我显示“标题”的事情,我如何只能选择具有像链接这样的mp4有效文件的链接

import requests

file_prefix = 'https://example.com/assets/contents/1627'

file_lists = []
for i in range(10**6):
    suffix = (6-len(str(i)))*"0"+str(i)+".mp4"
    file_name = file_prefix+suffix
    try:
        requests.get(file_name)
        file_lists.append(file_name)
        r = requests.get(file_name, stream=True)
        print(file_name)        
        print(r.headers)
    except:
        continue
for i in file_lists:
    print(i)
© www.soinside.com 2019 - 2024. All rights reserved.