Tôi cần lấy tất cả văn bản từ trang bằng BeautifulSoup. Tại tài liệu của BeautifulSoup, nó cho thấy rằng bạn có thể làm soup.get_text()
để làm điều này. Khi tôi đã thử làm điều này trên reddit.com, tôi nhận được lỗi này:Sử dụng soup.get_text() với UTF-8
UnicodeEncodeError in soup.py:16
'cp932' codec can't encode character u'\xa0' in position 2262: illegal multibyte sequence
Tôi gặp lỗi như vậy trên hầu hết các trang web tôi đã kiểm tra.
Tôi gặp lỗi tương tự khi tôi cũng đã làm soup.prettify()
, nhưng tôi đã sửa lỗi bằng cách thay đổi nó thành soup.prettify('UTF-8')
. Có cách nào để sửa lỗi này không? Cảm ơn trước!
Cập nhật 24 tháng 6
Tôi đã tìm thấy một chút mã mà dường như làm việc cho người khác, nhưng tôi vẫn cần phải sử dụng UTF-8 thay vì mặc định. Mã số:
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ỗi khác nhau. Phát triển?
UnicodeEncodeError in soup.py:29
'ascii' codec can't encode character u'\xbb' in position 1: ordinal not in range
(128)