Уведомления

Группа в Telegram: @pythonsu

#1 Май 2, 2011 21:26:56

ustuz
От:
Зарегистрирован: 2011-05-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по urljoin

Всем доброго времени суток.

Столкнулся на днях с одной проблемой urljoin.

Пытаюсь распарсить html, и при этом перевести относительный адреса в абсолютные. Использую для это urljoin.

Проблема:
Есть сайт http://www.aaa.xxx

На html страничке http://www.aaa.xxx/a/b/c есть <a> тег с href = “a/b/c?param=d”

Браузеры превращают ссылку, описанную в этом теге в http://www.aaa.xxx/a/b/c?param=d

А вызов urljoin:
urlparse.urljoin("http://www.aaa.xxx/a/b/c“,”a/b/c?param=d")

выдает результат:
'http://www.aaa.xxx/a/b/a/b/c?param=d'

Кто-нибудь сталкивался с такой проблемой? Хотелось бы получить поведение идентичное поведению браузеров (и соответственно стандартам RFC).
Может есть аналог urljoin, работающий правильно?



Офлайн

#2 Май 2, 2011 21:56:57

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Вопрос по urljoin

Совершенно очевидно, что urljoin работает правильно.
Пилите дальше.

..bw



Офлайн

#3 Май 2, 2011 22:11:13

ustuz
От:
Зарегистрирован: 2011-05-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по urljoin

Хм…
Тогда вопрос: “Как повторить логику браузера при формировании абсолютного url?”

Есть ли функция (или набор функций), которые позволят это сделать?



Офлайн

#4 Май 2, 2011 22:37:06

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Вопрос по urljoin

Совершенно очевидно, что вы где-то косячите, по примеру, браузер такого делать не может.
@see: http://d69.dyndns.org/a/b/c

..bw



Офлайн

#5 Май 2, 2011 22:45:02

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Вопрос по urljoin

Скорее всего у страницы есть тег <base>



Офлайн

#6 Май 3, 2011 00:47:48

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Вопрос по urljoin

И правда, не знал. BASE объясняет такое поведение браузера. Век живи, век учись :-).

..bw



Офлайн

#7 Май 3, 2011 07:54:35

ustuz
От:
Зарегистрирован: 2011-05-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по urljoin

“Скорее всего у страницы есть тег <base>”

Спасибо большое, Александр! Действительно, этот тег присутствует на странице и его присутствие многое объясняет в поведении браузера.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version