Почему Urllib2.urlopen не может открывать такие страницы, как «http: // localhost / new-post # comment-29»?

StackOverflow https://stackoverflow.com/questions/3798422

Вопрос

Мне любопытно, как приду я получаю 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, который вы сохраняли на первом шаге.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top