0

我正在使用 urllib.request 库中的 urlretrieve 从网站下载图像。我的代码很慢。保存 4 张图片(64x64 和 png)花了 12 分钟。这是不正常的,因为我已经在其他站点上对其进行了测试,并且它的工作速度更快(我的意思是一张图像需要 3 分钟是不正常的)。问题是来自网站还是我的电脑(我的网络很好)。这是代码:

import urllib.request
from PIL import Image
import os.path
import json

#Load and edit latest crypto data for cards
with open("json/latest_crypto.json", 'r') as latest_crypto_json:
    latest_crypto = json.load(latest_crypto_json)
    del latest_crypto["status"]

for i in latest_crypto['data']:
    logo_online_adress = "https://s2.coinmarketcap.com/static/img/coins/64x64/{}.png".format(i)
    logo_local_adress = "misc/cryptoLogo/{}.png".format(i)
    if not os.path.exists(logo_local_adress):
        urllib.request.urlretrieve(logo_online_adress, logo_local_adress)
        current_logo = Image.open(logo_local_adress)
        if current_logo.size != (64, 64):
            resized_logo = current_logo.resize((64,64))
            resized_logo.save(logo_local_adress)
            print(i+" import with resize")
        else:
            print(i+" import without resize")
    else:
        print(i+" already exist")

对于上下文,我正在从 CoinMarketCap 收集加密货币徽标,以供以后在 HTML 代码中使用。

我正在检查它是否已经存在于目标文件夹中,如果不存在,我会得到它并在需要时调整大小。

这可能很混乱,但这条线周围的一切都按预期工作:

 urllib.request.urlretrieve(logo_online_adress, logo_local_adress)

我唯一的问题是速度。我现在不能使用这个脚本,因为它太慢了。

4

1 回答 1

0

您可以尝试使用 curl 来获取图片,看看是否更快 - 如果没有,请尝试您的网络浏览器。

如果这样更快,那么您可能必须冒充浏览器客户端,设置与浏览器相同的标题。

有些人做了很多事情来对抗其他人的自动化。

于 2022-02-27T19:51:53.223 回答