Wie speichern zurück änderungen an einer HTML-Datei mit BeautifulSoup Python?
Python noob hier...
Ich habe das Skript unten, das ändert die hrefs für eine html-Datei (in der Zukunft wird es eine Liste von HTML-Dateien in einem Verzeichnis). Mit beautifulSoup ich es geschafft, Zugriff auf die tag-Werte und ändern Sie es wie ich will aber ich weiß nicht, wie Sie speichern zurück, die änderungen an der Datei vorgenommen. Jede Hilfe wird sehr geschätzt.
import os
import re
from bs4 import BeautifulSoup
htmlDoc = open('adding_computer_c.html',"r+")
soup = BeautifulSoup(htmlDoc)
replacements= [ ('_', '-'), ('../tasks/', prefixUrl), ('../concepts/', prefixUrl) ]
for link in soup.findAll('a', attrs={'href': re.compile("../")}):
newlink=str(link)
for k, v in replacements:
newlink = newlink.replace(k, v)
extrachars=newlink[newlink.find("."):newlink.find(">")]
newlink=newlink.replace(extrachars,'')
link=newlink
print(link)
##How do I save the link I have modified back to the HTML file?
print(soup)##prints the original html tree
htmlDoc.close()
InformationsquelleAutor PepeFloyd | 2013-01-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nun
print(soup.prettify())
zeigen geänderten links. Um die änderungen zu speichern in eine Datei:Bewahren den ursprünglichen Charakter Codierung des Dokuments, die Sie nutzen könnten
soup.original_encoding
statt "utf-8". Sehen Codierungen.Ich Tat dies, aber dafür schlage ich die maximale Rekursionstiefe. Irgendeine Idee warum?
Für Python 3 verwenden, müssen Sie:
open("output.html", "wt")
falsch.
soup.prettify('utf-8')
zurück bytes und damit sind 'wb' muss verwendet werden, wie gezeigt in der Antwort.InformationsquelleAutor jfs