2013-01-16 13 views
12

Python noob qui ...Come salvare le modifiche apportate a un file HTML utilizzando BeautifulSoup in Python?

Ho lo script seguente, che modifica gli hrefs per un file html (in futuro sarà un elenco di file HTML in una directory). Usando beautifulSoup sono riuscito ad accedere ai valori del tag e a modificarlo come voglio ma non so come salvare le modifiche apportate al file. Qualsiasi aiuto sarà molto apprezzato.

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() 

risposta

35
newlink = link['href'] 
# .. make replacements 
link['href'] = newlink # store it back 

Ora print(soup.prettify()) mostrerà link modificati. Per salvare le modifiche in un file:

htmlDoc.close() 

html = soup.prettify("utf-8") 
with open("output.html", "wb") as file: 
    file.write(html) 

per mantenere la codifica carattere originale del documento, è possibile utilizzare soup.original_encoding invece di "utf-8". Vedi Encodings.

+0

Ha funzionato! Molte grazie! – PepeFloyd

+1

L'ho fatto ma ho raggiunto la massima profondità di ricorsione. Qualche idea del perché? –

+0

Per Python 3, è necessario utilizzare: 'open (" output.html "," wt ")' –

Problemi correlati