Получение HEAD контента с помощью Python Requests - PullRequest
14 голосов
/ 04 марта 2012

Я пытаюсь проанализировать результат запроса HEAD с использованием библиотеки Python Requests , но не могу получить доступ к содержимому ответа.

Согласно документам , я должен иметь доступ к содержимому из запросов. Ответ. Текст. Это нормально работает для GET-запросов, но возвращает None для HEAD-запросов.

GET запрос (работает)

import requests
response = requests.get(url)
content = response.text

содержание = <html>...</html>

запрос HEAD (без содержимого)

import requests
response = requests.head(url)
content = response.text

содержание = None


EDIT

ОК. Из ответов я быстро понял, что запрос HEAD не должен возвращать заголовки, содержащие только контент. Но значит ли это, что для доступа к вещам, обнаруженным в теге <head> страницы, например тегам <link> и <meta>, необходимо получить весь документ?

Ответы [ 3 ]

21 голосов
/ 04 марта 2012

По определению ответы на запросы HEAD не содержат тела сообщения.

Отправьте запрос GET, если хотите, ну, в общем, получите тело ответа.Отправьте запрос HEAD если , то вас интересуют только код состояния ответа и заголовки.

HTTP передает произвольный контент;HTTP-термин header совершенно не связан с HTML <head>.Тем не менее, HTTP можно посоветовать загрузить только часть документа.Если вам известна длина кода HTML <head> (или верхняя граница для него), вы можете включить в запрос заголовок HTTP Range , который советует удаленному серверу возвращать только определенное количество байтов.Если удаленный сервер поддерживает диапазоны HTTP, он будет предоставлять сокращенный ответ.

8 голосов
/ 04 марта 2012

ГОЛОВА не имеет контента!Попробуйте response.headers - это, вероятно, где действие.Запрос HTTP HEAD не получает элемент <head> ответа HTML, который вы получите из запроса GET.Я думаю, что это твоя ошибка.

2 голосов
/ 04 марта 2012

Ответы HEAD не имеют тела.Они возвращают только заголовки HTTP, то же самое, что вы получите, используя запрос GET.

...