Пакет wget Python загружает/сохраняет XML без проблем, но не текстовые или html файлы

Я использовал этот базовый код для загрузки и хранения обновленных карт сайта с хостинга/службы краулинга, и он отлично работает для всех XML-файлов. Однако текстовые и HTML-файлы оказываются в неправильной кодировке, но когда я принудительно привожу их все к одной кодировке (UTF-8), изменений не происходит, и файлы остаются нечитаемыми (скриншоты прилагаются). Независимо от того, какая кодировка используется, файлы TXT и HTML не читаются, но файлы XML в порядке.

Я использую Python 3.10, Django 3.0.9 и последний доступный пакет wget python (3.2) на Windows 11. Я также пробовал использовать urllib и другие пакеты с теми же результатами.

Код:

sitemaps = ["https://.../sitemap.xml",
        "https://.../sitemap_images.xml",
        "https://.../sitemap_video.xml",
        "https://.../sitemap_mobile.xml",
        "https://.../sitemap.html",
        "https://.../urllist.txt",
        "https://.../ror.xml"]

def download_and_save(url):
    save_dir = settings.STATICFILES_DIRS[0]
    filename = url.split("/")[-1]
    full_path = os.path.join(save_dir, filename)
    if os.path.exists(full_path):
        os.remove(full_path)
    wget.download(url, full_path)

for url in sitemaps:
    download_and_save(url)

Для всех XML-файлов я получаю следующее (что является правильным результатом): image of downloaded xml file using WGET

Для файлов urllist.txt и sitemap.html результат такой:

screenshot of HTML encoding from wget

Я не уверен, почему XML-файлы сохраняются нормально, но кодировка путается только для текстовых (.txt) и html-файлов.

После разговора с хостинг-провайдером sitemap (pro-sitemaps.net) выяснилось, что проблема была на их стороне. Файлы HTML и TXT, которые я загружал, передавались с неправильной кодировкой (или что-то похожее на это). Хотя эти файлы были видны/доступны в браузере по прямым URL на их сервисе, они не передавались через wget с правильной кодировкой, как оказалось.

Я отправил тикет провайдеру, и проблема была решена в течение 12 часов (хотя я не получил подтверждения точного вопроса, который вызвал мою проблему здесь). Теперь я проверил, что файлы TXT и HTML передаются им в правильной кодировке/формате с помощью wget.

Вернуться на верх