Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 25, 2010 11:42:36

mrzaggi
От:
Зарегистрирован: 2010-09-25
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Сделать все относительные адреса абсолютными в полученом html

Большая часть вопроса - в заголовке. Получаю хтмл, требуется преобразовать все пути вида /subdir/file1.html в http://site.com/subdir/file1.html
Чем можно сделать?



Офлайн

#2 Окт. 25, 2010 12:12:28

tmt
От:
Зарегистрирован: 2010-03-26
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

Сделать все относительные адреса абсолютными в полученом html

Правильней всего это делать во время генерации хтмл.
Если страници приходят из “черного ящика”, который вас недоступен - используйте например регулярные виражения для замены, потом отображайте страницу.
Или после загрузки страницы меняйте javascript-ом. =)



Офлайн

#3 Окт. 25, 2010 12:25:50

mrzaggi
От:
Зарегистрирован: 2010-09-25
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Сделать все относительные адреса абсолютными в полученом html

Я ничего не генерирую =) я его скачиваю. А вообще походу нашел решение - BS/lxml + urlparse + urljoin сделают дело.



Офлайн

#4 Окт. 25, 2010 15:49:47

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

Сделать все относительные адреса абсолютными в полученом html

вот простенько

import re

html = '''
<a href="http://somesite.ru/url/">
<img src="pics/pic.jpg">
<img src="/pics/pic2.jpg">
</a>
'''
prefix = 'http://site.ru'
print re.sub(r'((href|src)=[\'\"](?!http))(.*?[\'\"])', '\\1%s/\\3' % prefix, html)



Отредактировано (Окт. 25, 2010 16:04:25)

Офлайн

#5 Окт. 29, 2010 12:19:12

mrzaggi
От:
Зарегистрирован: 2010-09-25
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Сделать все относительные адреса абсолютными в полученом html

простенько для тех кто умеет регулярки =) А у меня никак не доходят руки заботать их, хотя надобность какждый день возникает =(



Офлайн

#6 Окт. 29, 2010 13:43:06

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Сделать все относительные адреса абсолютными в полученом html

mrzaggi
простенько для тех кто умеет регулярки =) А у меня никак не доходят руки заботать их, хотя надобность какждый день возникает =(
надо просто заняться, они не только полезны, но и интересны

Офлайн

#7 Окт. 29, 2010 18:20:01

certanista
От:
Зарегистрирован: 2010-10-28
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Сделать все относительные адреса абсолютными в полученом html

mrzaggi
Я ничего не генерирую =) я его скачиваю. А вообще походу нашел решение - BS/lxml + urlparse + urljoin сделают дело.
Если на то пошло, то в lxml специальная функция есть.
http://codespeak.net/lxml/lxmlhtml.html#working-with-links



Офлайн

#8 Окт. 29, 2010 18:40:13

mrzaggi
От:
Зарегистрирован: 2010-09-25
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Сделать все относительные адреса абсолютными в полученом html

Вах спасибо.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version