Potrzebuję uzyskać cały tekst ze strony za pomocą BeautifulSoup. W dokumentacji BeautifulSoup pokazało, że możesz zrobić to, aby wykonać soup.get_text()
. Kiedy próbowałem to zrobić na reddit.com, mam ten błąd:Użyj soup.get_text() z UTF-8
UnicodeEncodeError in soup.py:16
'cp932' codec can't encode character u'\xa0' in position 2262: illegal multibyte sequence
otrzymuję błędy tak na większość witryn sprawdziłem.
Mam podobne błędy, gdy robiłem soup.prettify()
, ale naprawiłem go, zmieniając go na soup.prettify('UTF-8')
. Czy istnieje sposób, aby to naprawić? Z góry dziękuję!
Aktualizacja 24 czerwca
znalazłem kawałek kodu, który wydaje się działać dla innych ludzi, ale nadal trzeba używać UTF-8 zamiast domyślnego. Kod:
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
Błąd jest jednak inny. Postęp?
UnicodeEncodeError in soup.py:29
'ascii' codec can't encode character u'\xbb' in position 1: ordinal not in range
(128)