Question

J'ai écrit un simple script Python pour télécharger une page Web pour une consultation hors ligne. Le problème est que les liens relatifs sont brisés. Ainsi, le fichier hors ligne "c: \ temp \ de webpage.html" a href = "index.aspx", mais lorsqu'il est ouvert dans un navigateur, il décide de "file: /// C: /temp/index.aspx" au lieu de " http://myorginalwebsite.com/index.aspx ».

Alors je suppose que je dois modifier mon script pour corriger chacun des liens relatifs afin qu'il pointe vers le site d'origine. Y at-il un moyen plus facile? Sinon, quelqu'un a un certain exemple de code Python qui peut le faire? Je suis un débutant Python donc tous les pointeurs seront appréciés.

Merci.

Était-ce utile?

La solution

Si vous voulez juste vos liens pour faire référence au site, il suffit d'ajouter une étiquette de base dans la tête:

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

Autres conseils

lxml fait ce simple 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']

De là, vous pouvez écrire le DOM sur le disque sous forme de fichier.

Vous voulez vérifier tous les liens qui commencent par http:// mais tous ceux qui ne vous voulez pas ajouter http://myoriginalwebsite.com à l'avant de la chaîne, puis testez la connexion?

Cela semble assez facile. Ou est-ce le code python approprié que vous rencontrez des problèmes avec?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top