Domanda

ho scritto un semplice Python script per scaricare una pagina web per la visualizzazione offline. Il problema è che i relativi collegamenti sono rotti. Quindi il file non in linea "c: \ temp \ webpage.html" ha un href = "index.aspx", ma quando viene aperto in un browser si risolve a "file: /// C: /temp/index.aspx" invece di " http://myorginalwebsite.com/index.aspx ".

Quindi, immagino che avrei dovuto modificare il mio script per risolvere ciascuno dei relativi collegamenti in modo che punti al sito originale. C'è un modo più semplice? In caso contrario, qualcuno ha un po 'di codice Python di esempio che può fare questo? Sono un principiante Python in modo che qualsiasi puntatori sarà apprezzato.

Grazie.

È stato utile?

Soluzione

Se si desidera solo il tuo link relativi a visitare il sito Web, è sufficiente aggiungere un tag base nella testa:

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

Altri suggerimenti

lxml rende questo braindead semplice!

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

Da lì si può scrivere il DOM su disco come file.

Così si desidera controllare tutti i link che cominciano con http://, ma quelle che non lo fanno si desidera aggiungere http://myoriginalwebsite.com verso la parte anteriore della stringa, quindi prova per il collegamento?

Sembra abbastanza facile. O è il codice Python corretta hai problemi con?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top