Я пытаюсь получить заголовки данного URL-адреса, чтобы определить тип MIME. Я хочу увидеть http://somedomain/foo/
, вернет ли, например, документ HTML или изображение JPEG. Таким образом, мне нужно выяснить, как отправить запрос HEAD, чтобы я мог читать тип MIME, не загружая контент. Кто-нибудь знает простой способ сделать это?
python
python-2.7
http
http-headers
content-type
fuentesjr
источник
источник
urlparse
под рукой, о чем свидетельствует ответ более низкого ранга.httplib
переименован вhttp.client
.requests
по умолчанию не поставляется с Python.urllib2 может использоваться для выполнения запроса HEAD. Это немного лучше, чем использование httplib, поскольку urllib2 анализирует URL-адрес для вас, вместо того, чтобы требовать, чтобы вы разделяли URL-адрес на имя хоста и путь.
Заголовки, как и раньше, доступны через response.info (). Интересно, что вы можете найти URL-адрес, на который вы были перенаправлены:
источник
httplib.HTTPConnection
, которое не обрабатывает перенаправления автоматически.Обязательный
Requests
способ:источник
Я считаю, что следует упомянуть и библиотеку запросов .
источник
allow_redirects
можно отключить только перенаправления POST / PUT / DELETE. Пример: запросПросто:
Изменить: я только что понял, что есть httplib2: D
текст ссылки
источник
request
. (То есть, это будет работать, но это плохой стиль, и если вы захотите использоватьself
его - сложно.)Для полноты, чтобы получить ответ Python3, эквивалентный принятому ответу с использованием httplib .
Это в основном тот же код, только библиотека больше не называется httplib , а http.client
источник
источник
import
? +1 заurlparse
- вместе с нимиhttplib
дают удобствоurllib2
при работе с URL-адресами на стороне ввода.Кстати, при использовании httplib (по крайней мере, в 2.5.2) попытка прочитать ответ на запрос HEAD будет блокироваться (в строке чтения) и впоследствии завершаться ошибкой. Если вы не выдадите read в ответе, вы не сможете отправить другой запрос на соединение, вам нужно будет открыть новый. Или согласитесь с большой задержкой между запросами.
источник
Я обнаружил, что httplib немного быстрее urllib2. Я рассчитал время для двух программ - одна с использованием httplib, а другая с использованием urllib2 - отправка запросов HEAD на 10 000 URL-адресов. Httplib был быстрее на несколько минут. Общая статистика httplib была: real 6m21.334s user 0m2.124s sys 0m16.372s
И urllib2 «s общая статистика была: реальная 9m1.380s пользователя 0m16.666s SYS 0m28.565s
Кто-нибудь еще имеет мнение по этому поводу?
источник
И еще один подход (похожий на ответ Павла):
Просто чтобы избежать неограниченных методов на уровне экземпляра.
источник
Наверное, проще: использовать urllib или urllib2.
f.info () - объект, подобный словарю, поэтому вы можете использовать f.info () ['content-type'] и т. д.
http://docs.python.org/library/urllib.html
http://docs.python.org/library/urllib2.html
http://docs.python.org/library/httplib.html
В документации отмечается, что httplib обычно не используется напрямую.
источник