Как исправить сломанные относительные ссылки в автономных веб-страницах?
-
26-09-2019 - |
Вопрос
Я написал простой сценарий 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, с которым у вас проблемы?