Pergunta

Eu escrevi um script python simples para baixar uma página da web para visualização offline. O problema é que os links relativos estão quebrados. Portanto, o arquivo offline "C: temp webpage.html" possui um href = "index.aspx", mas quando aberto em um navegador, ele resolve "arquivo: /// c: /temp/index.aspx" em vez de "http://myorginalwebsite.com/index.aspx".

Então, imagino que teria que modificar meu script para corrigir cada um dos links relativos, para que ele aponte para o site original. Existe uma maneira mais fácil? Caso contrário, alguém tem algum código Python de amostra que pode fazer isso? Eu sou um novato em Python para que todos os ponteiros sejam apreciados.

Obrigado.

Foi útil?

Solução

Se você apenas deseja que seus links relativos consultem o site, basta adicionar uma tag base na cabeça:

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

Outras dicas

lxml simplifica este BrainDead!

>>> 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']

A partir daí, você pode escrever o DOM para disco como um arquivo.

Então você quer verificar todos os links que começam com http:// Mas qualquer um que você não queira anexar http://myoriginalwebsite.com para a frente da string e depois teste a conexão?

Parece fácil o suficiente. Ou é o código Python adequado que você está tendo problemas?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top