Как исправить сломанные относительные ссылки в автономных веб-страницах?

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

Вопрос

Я написал простой сценарий Python для загрузки веб-страницы для оффлайн просмотра. Проблема в том, что относительные ссылки нарушены. Таким образом, в автономном файле «C: Temp WebPage.html» имеет href = "index.aspx", но когда открывается в браузере, он разрешает «Файл: /// C: /temp/index.aspx» вместо «http://myorginalwebsite.com/index.aspx.".

Поэтому я представляю, что мне придется изменить свой скрипт, чтобы исправить каждую из относительных ссылок, чтобы он указывал на оригинальный веб-сайт. Есть ли проще? Если нет, у кого-нибудь есть образец кода Python, который может сделать это? Я Python Newbie, поэтому любые указатели будут оценены.

Спасибо.

Это было полезно?

Решение

Если вы просто хотите, чтобы ваши родственники ссылались на сайт, просто добавьте базовый тег в головке:

<base href="http://myoriginalwebsite.com/" />

Другие советы

lxml. делает этот мозги простого!

>>> import lxml.html, urllib
>>> url = 'http://www.google.com/'
>>> e = lxml.html.parse(urllib.urlopen(url))
>>> e.xpath('//a/@href')[-4:]
['/intl/en/ads/', '/services/', '/intl/en/about.html', '/intl/en/privacy.html']
>>> e.getroot().make_links_absolute()
>>> e.xpath('//a/@href')[-4:]
['http://www.google.com/intl/en/ads/', 'http://www.google.com/services/', 'http://www.google.com/intl/en/about.html', 'http://www.google.com/intl/en/privacy.html']

Оттуда вы можете написать DOM на диск в качестве файла.

Так что вы хотите проверить все ссылки, которые начинаются с http:// Но любой, что ты не хочешь добавить http://myoriginalwebsite.com Передняя часть строки, затем тестируйте для подключения?

Звучит легко легко. Или это правильный код Python, с которым у вас проблемы?

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