Я пытаюсь использовать python (с pyquery и lxml), чтобы изменить и очистить некоторый html.
Eg. html = "<div><!-- word style><bleep><omgz 1,000 tags><--><p>It’s a spicy meatball!</div>"
Функция lxml.html.clean, clean_html (), работает хорошо, за исключением того, что она заменяет красивые html-объекты, такие как
’
, на некоторую строку Unicode
\xc2\x92
Юникод выглядит странно в разных браузерах (firefox и opera с автокодированием, utf8, latin-1 и т. д.), как пустой ящик. Как я могу остановить преобразование сущностей в lxml? Как мне получить все это в кодировке latin-1? Кажется странным, что модуль, созданный специально для html, сделал бы это.
Я не могу точно сказать, какие символы там есть, поэтому я не могу просто использовать
replace("\xc2\x92","’").
Я пробовал использовать
clean_html(html).encode('latin-1')
, но юникод сохраняется .
И да, я бы посоветовал людям перестать использовать слово для написания html, но тогда я бы услышал целиком
«Это мне нравится, но я не могу заставить меня измениться».
Править : решение 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