Pregunta

Me escribió un simple script en Python para descargar una página web para verlas sin conexión. El problema es que los vínculos relativos se rompen. Por lo que el archivo sin conexión "c: \ temp \ webpage.html" tiene a href = "index.aspx", pero cuando se abre en un navegador se resuelve a "file: /// C: /temp/index.aspx" en lugar de " http://myorginalwebsite.com/index.aspx ".

Así que imaginar que tendría que modificar mi script para solucionar cada uno de los enlaces relativos para que apunte a la página original. hay una manera mas facil? Si no es así, alguien tiene algún código Python muestra que se puede hacer esto? Soy un novato Python así será apreciado ningún punteros.

Gracias.

¿Fue útil?

Solución

Si sólo desea que sus enlaces relativos a refieren a la página web, sólo tiene que añadir una etiqueta de base en la cabeza:

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

Otros consejos

lxml hace que este braindead simple!

>>> 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 de ahí se puede escribir el DOM a cabo en el disco como un archivo.

Así que desea comprobar todos los enlaces que comienzan con http:// pero que no lo hicieron desea anexar http://myoriginalwebsite.com al frente de la cadena, y la prueba de conexión?

Suena bastante fácil. ¿O es el código Python adecuado que estés teniendo problemas con?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top