なぜurllib2.urlopenは「http:// localhost/new-post#comment-29」のようなページを開けないのですか?
-
05-10-2019 - |
質問
私は興味があります、どうして私はこの行を実行している404エラーを取得します:
urllib2.urlopen("http://localhost/new-post#comment-29")
すべてがうまくいきますが、サーフィン http:// localhost/new-post#comment-29 ブラウザで...
Urlopenメソッドは、URLを「#」と解析しませんか?
誰かが知っていますか?
解決
HTTPプロトコルでは、フラグメント(から #
以降)はネットワーク全体でサーバーに送信されません。ブラウザによってローカルに保持され、サーバーの応答が完全に受信されると、「現在」と表示されるページの正確な場所を何らかの形で「視覚的に見つける」ように使用されます(たとえば、返されたページがHTMLにある場合、これはHTMLを解析し、最初の適切なものを探して行われます <a>
国旗)。
したがって、手順は次のとおりです。 urlparse.urlparse
;残りを使用してリソースを取得します。サーバーの応答のコンテンツタイプのヘッダーに基づいて適切に解析します。次に、最初のステップで保持したフラグメントを解析されたリソース内に配置することに基づいて、リソースの「現在のスポット」に関してプログラムが行う視覚的アクションを実行します。
所属していません StackOverflow