Frage

Ich schrieb ein einfaches Python-Skript, um eine Web-Seite für die Offline-Wiedergabe herunterzuladen. Das Problem ist, dass die relativen Links gebrochen werden. So die Offline-Datei "c: \ temp \ webpage.html" hat a href = "index.aspx" aber wenn in einem Browser löst es zu öffnen "file: /// C: /temp/index.aspx" statt " http://myorginalwebsite.com/index.aspx “.

So denke ich, dass ich mein Skript ändern, müsste jede der relativen Links zu beheben, so dass es auf die Website verweist. Gibt es einen einfacheren Weg? Wenn nicht, hat jemand einig Beispiel-Python-Code, der dies tun kann? Ich bin ein Python-Neuling so werden alle Zeiger geschätzt werden.

Danke.

War es hilfreich?

Lösung

Wenn Sie nur Ihre relativen Links auf die Website verweisen mögen, fügen Sie einfach einen Basis-Tag im Kopf:

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

Andere Tipps

lxml macht diese hirntot einfach!

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

Von dort können Sie das DOM auf der Festplatte als Datei schreiben können.

Sie wollen also alle Links überprüfen, die mit http:// beginnen, aber alle, die Sie nicht wollen, http://myoriginalwebsite.com auf der Vorderseite der Zeichenfolge anzuhängen, dann Test für den Anschluss?

Klingt einfach genug. Oder ist es die Python-Code richtigen sind, die Sie Probleme mit?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top