Почему 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
; используйте остальные, чтобы получить ресурс; Разбирайте его надлежащим образом на основе заголовка типа содержимого сервера; Затем возьмите любые визуальные действия, которые важна ваша программа, касающаяся «текущего пятна» на ресурсе, на основе нахождения нахождения в Parsed Resource Fragment, который вы сохраняли на первом шаге.