Ho bisogno di ottenere tutto il testo da una pagina usando BeautifulSoup. Nella documentazione di BeautifulSoup, è stato dimostrato che è possibile fare soup.get_text()
per farlo. Quando ho provato a fare questo su reddit.com, ho ottenuto questo errore:Usa soup.get_text() con UTF-8
UnicodeEncodeError in soup.py:16
'cp932' codec can't encode character u'\xa0' in position 2262: illegal multibyte sequence
ricevo errori come quello sulla maggior parte dei siti che ho controllato.
Ho avuto errori simili quando ho fatto anche lo soup.prettify()
, ma l'ho risolto cambiando in soup.prettify('UTF-8')
. C'è un modo per risolvere questo problema? Grazie in anticipo!
Aggiornamento 24 giugno
ho trovato un po 'di codice che sembra funzionare per gli altri, ma ho ancora bisogno di utilizzare UTF-8 al posto del default. Codice:
texts = soup.findAll(text=True)
def visible(element):
if element.parent.name in ['style', 'script', '[document]', 'head', 'title']:
return False
elif re.match('', str(element)): return False
elif re.match('\n', str(element)): return False
return True
visible_texts = filter(visible, texts)
print visible_texts
L'errore è diverso, tuttavia. Progresso?
UnicodeEncodeError in soup.py:29
'ascii' codec can't encode character u'\xbb' in position 1: ordinal not in range
(128)