22

Pythonリクエストライブラリを使用して行われた HEAD リクエストの結果を解析しようとしていますが、レスポンス コンテンツにアクセスできないようです。

docsによると、requests.Response.text からコンテンツにアクセスできるはずです。これは GET リクエストでは問題なく動作しますが、HEAD リクエストでは None を返します。

GET リクエスト (動作)

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

コンテンツ =<html>...</html>

HEAD リクエスト (コンテンツなし)

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

コンテンツ =None


編集

OK 回答から、HEAD リクエストがコンテンツのみのヘッダーを返すことになっていないことがすぐにわかりました。<head>しかし、それはページのタグ内にあるものにアクセスするには、<link><meta>タグなど、ドキュメント全体を取得する必要があるということでしょうか?

4

3 に答える 3

32

定義により、HEAD リクエストへの応答にはメッセージ本文が含まれません。

応答本文を取得したい場合は、GET 要求を送信します。レスポンスのステータス コードとヘッダーのみが必要な場合は HEAD リクエストを送信してください。

HTTP は任意のコンテンツを転送します。HTTP タームヘッダーは HTML とはまったく関係ありません<head>。ただし、HTTP はドキュメントの一部のみをダウンロードすることをお勧めします。HTML コードの長さ<head>(またはその上限)がわかっている場合は、特定のバイト数のみを返すようにリモート サーバーに通知するHTTP Rangeヘッダーをリクエストに含めることができます。リモート サーバーが HTTP 範囲をサポートしている場合は、短縮された回答が提供されます。

于 2012-03-04T12:48:05.483 に答える
8

HEAD にはコンテンツがありません! 試してみてくださいresponse.headers- それがおそらくアクションの場所です。HTTP HEAD リクエストは<head>、GET リクエストから取得する HTML レスポンスの要素を取得しません。それはあなたの間違いだと思います。

于 2012-03-04T12:48:46.890 に答える
2

HEAD 応答には本文がありません。GET リクエストを使用して取得する場合と同じように、HTTP ヘッダーのみを返します。

于 2012-03-04T12:49:24.710 に答える