首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何自动从网站下载多幅(30143)图像

如何自动从网站下载多幅(30143)图像
EN

Stack Overflow用户
提问于 2022-11-26 16:08:32
回答 2查看 47关注 0票数 0

有一个网站可以存储两个视频作为数千个PNG的列表,总共有31145张图片。有没有一种通过生成URL来自动下载的方法?(我对编码一无所知。)

  1. 这是第一个视频的第一帧和它的最后帧
  2. 这是第二个视频的第一帧和它的最后帧

我无法访问目录并批量下载文件。

我看了一下这个答案,但它不适用于我,因为我使用的是Windows10,我还检查了这个答案;我试图将它们合并到for /l %x in (1, 1, 19999) do (wget https://cf-images.eu-west-1.prod.boltdns.net/v1/jit/719509184001/570e9336-d36c-4d41-8cbe-a67fe3bdc2b6/main/1280x720/%%xms/match/image.png)中,这显然不起作用。

然后我下载了Python3.11来尝试这个答案,但是不起作用,因为它可能太老了,因为它告诉我urllib2不存在。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-26 18:14:29

Python 3.11 for Windows 10 64位

代码语言:javascript
运行
复制
import urllib
import urllib.request
template_url = 'https://cf-images.eu-west-1.prod.boltdns.net/v1/jit/719509184001/570e9336-d36c-4d41-8cbe-a67fe3bdc2b6/main/1280x720/%05dms/match/image.png'
template_name = 'image%05d.png'
for i in range(0,20000):
    f = template_name % i
    urllib.request.urlretrieve(template_url % i, f)

这是非常缓慢的,它至少花了我5个小时来下载一切,因为它做到了1乘1,有时停止工作(由于网站),并没有自动重新启动。而且几乎80%的下载图像都是复制的,所以这是非常不切实际的(7 Go)。所有图像都被下载到临时文件夹中。但密码有效!我相信它是为了复制“我的世界”而制作的,但是在像“后效”这样的软件中,所有的帧都只是一个微小的不同。

资料来源: Python 1 2 3. 4. 5;Stackoverflow 1 2 3. 4.;和@Daweo's help

票数 -1
EN

Stack Overflow用户

发布于 2022-11-26 16:24:41

您需要获得两件事:生成图像的URL,然后下载它们。

可以使用for循环和格式化来生成URL,请考虑下面的简单示例

代码语言:javascript
运行
复制
template = 'xxx/%05dms/match/image.png'
for i in range(1,11): # limited for brevity sake, adjust as requires
    print(template % i)

给予输出

代码语言:javascript
运行
复制
xxx/00001ms/match/image.png
xxx/00002ms/match/image.png
xxx/00003ms/match/image.png
xxx/00004ms/match/image.png
xxx/00005ms/match/image.png
xxx/00006ms/match/image.png
xxx/00007ms/match/image.png
xxx/00008ms/match/image.png
xxx/00009ms/match/image.png
xxx/00010ms/match/image.png

%05d表示把十进制数放在这里,以零作为前缀,宽度为5个字符。

要下载,可以使用urllib.urlretrieve rembering提供唯一的名称,请考虑下面的简单示例

代码语言:javascript
运行
复制
import urllib
template_url = 'xxx/%05dms/match/image.png'
template_name = 'image%05d.png'
for i in range(1,11):
    urllib.urlretrieve(template_url % i, template_name % i)

在将template_url设置为real之后,应该将图像下载到当前的工作目录中,如image00001.png等。

注意:当您使用xrange时,我假设您必须不惜任何代价使用python2,因此我使用urllib.urlretrieve而不是urllib.request.urlretrieve和古老的字符串格式方法,而不是所谓的f-字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74583694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档