Nuovo in Python & BeautifulSoup. Ho un programma Python che apre un file chiamato "example.html", esegue un'azione BeautifulSoup su di esso, quindi esegue un'azione Bleach su di esso, quindi salva il risultato come file "example-cleaned.html". Finora funziona per tutti i contenuti di "example.html".Analizza ogni file in una directory con BeautifulSoup/Python, salva come nuovo file
Ho bisogno di modificarlo in modo che apra ciascun file nella cartella "/ posts /", esegue il programma su di esso, quindi lo salva come "/posts-cleaned/X-cleaned.html" dove X è il nome file originale.
Ecco il mio codice, ridotto al minimo:
from bs4 import BeautifulSoup
import bleach
import re
text = BeautifulSoup(open("posts/example.html"))
text.encode("utf-8")
tag_black_list = ['iframe', 'script']
tag_white_list = ['p','div']
attr_white_list = {'*': ['title']}
# Step one, with BeautifulSoup: Remove tags in tag_black_list, destroy contents.
[s.decompose() for s in text(tag_black_list)]
pretty = (text.prettify())
# Step two, with Bleach: Remove tags and attributes not in whitelists, leave tag contents.
cleaned = bleach.clean(pretty, strip="TRUE", attributes=attr_white_list, tags=tag_white_list)
fout = open("posts/example-cleaned.html", "w")
fout.write(cleaned.encode("utf-8"))
fout.close()
print "Done"
Assistenza & puntatori alle soluzioni esistenti volentieri ricevuti!
['os.listdir()'] (http://docs.python.org/library/os.html#os.listdir), ['os.walk()'] (http: // docs. python.org/library/os.html#os.walk) – NullUserException
'[s.decompose() per s nel testo (tag_black_list)]' dovrebbe essere scritto come 'per s nel testo (tag_black_list): s.decompose()' altrimenti stai costruendo una lista (con possibili valori di ritorno, solo per scartarla immediatamente) –