Sto provando a usare python (con pyquery e lxml) per modificare e ripulire alcuni html.Usare python per modificare html, ma lxml converte entità belle HTML in codifica strana
Eg. html = "<div><!-- word style><bleep><omgz 1,000 tags><--><p>It’s a spicy meatball!</div>"
La funzione lxml.html.clean, clean_html(), funziona bene, tranne che sostituisce le belle entità HTML come
’
con una certa stringa unicode
\xc2\x92
Il unicode sembra strano in diversi browser (firefox e opera usando la codifica automatica, utf8, latin-1, ecc.), come una scatola vuota. Come posso impedire a lxml di convertire le entità? Come posso ottenere tutto con la codifica latin-1? Sembra strano che un modulo creato specificamente per html possa farlo.
io non posso essere sicuro di cui personaggi sono lì, quindi non posso semplicemente usare
replace("\xc2\x92","’").
Ho provato con
clean_html(html).encode('latin-1')
ma l'unicode persiste.
E sì, mi piacerebbe dire alla gente di smettere di usare la parola per scrivere codice HTML, ma poi mi piacerebbe sentire tutta la
"iz th Wayz i liks è u cant mak me chang hitlr".
Edit: una soluzione BeautifulSoup:
from BeautifulSoup import BeautifulSoup, Comment
soup = BeautifulSoup(str(desc[desc_type]))
comments = soup.findAll(text=lambda text:isinstance(text, Comment))
[comment.extract() for comment in comments]
print soup
Curioso: Perché non stai usando BeautifulSoup – inspectorG4dget
@inspector: A quanto mi risulta, BeautifulSoup non è più in fase di sviluppo attivo, e gli utenti sono incoraggiati a cercare altre soluzioni (come lxml). –
@SethJohnson: non lo sapevo. Grazie per avermi detto – inspectorG4dget