Как проверить, доступен ли URL для скачивания? - PullRequest
0 голосов
/ 06 мая 2020

Как проверить, доступен ли данный URL-адрес для загрузки или нет, используя Python?

Он должен вернуть True, если он доступен для загрузки, иначе False

Пример не загружаемый URL: www.google.com

Примечание: Я не говорю о содержимом URL и сохранении его как веб-страницы.

Что такое загружаемый URL?

Если вы перенаправляете на URL-адрес и если файл начинает загружаться, то это загружаемый URL

Пример: https://drive.google.com/uc?id=1QOmVDpd8hcVYqqUXDXf68UMDWQZP0wQV&export=download

Примечание: Он загружает набор данных ежегодного опроса stackoverflow за 2019 год.

Ответы [ 3 ]

2 голосов
/ 06 мая 2020

Это можно сделать с помощью популярной библиотеки запросов

import requests
url = 'https://www.google.com'
headers=requests.head(url).headers
downloadable = 'attachment' in headers.get('Content-Disposition', '')

Ссылка на заголовок Content Disposition

1 голос
/ 12 августа 2020

Итак, я попытался найти лучший способ, ссылка на сайт, которую я проверял, была немного сложной, в большинстве ответов stackoverflow, упомянутых об использовании заголовочного запроса для получения заголовка ответа, но проверяемый мной сайт вернул ошибку 404. Когда я использую get запрос, весь файл загружается перед выводом заголовка. Мой друг предложил мне решение с использованием параметра stream=True, и это действительно сработало.

import requests 
r = requests.get(link, stream=True)
print(r.headers)
0 голосов
/ 06 мая 2020

На уровне самого протокола HTTP не существует различия между URL-адресами для загрузки и без загрузки. Есть HTTP-запрос и последующий ответ. Тело ответа может быть двоичным файлом, HTML, изображением и т.д. c ..

Вы можете просто запросить заголовок ответа HTTP, найти Content-Type: и решить, хотите ли вы учитывать этот тип содержимого. как загружаемые или не загружаемые.

...