Как исправить неработающие относительные ссылки в автономных веб-страницах? - PullRequest
0 голосов
/ 31 августа 2010

Я написал простой скрипт на Python для загрузки веб-страницы для просмотра в автономном режиме. Проблема в том, что относительные ссылки не работают. Таким образом, автономный файл "c: \ temp \ webpage.html" имеет href = "index.aspx", но при открытии в браузере он преобразуется в "file: /// C: /temp/index.aspx" вместо " http://myorginalwebsite.com/index.aspx".

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

Спасибо.

Ответы [ 3 ]

5 голосов
/ 31 августа 2010

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

<base href="http://myoriginalwebsite.com/" />
1 голос
/ 31 августа 2010

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 на диск в виде файла.

0 голосов
/ 31 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...