2015-05-01 15 views
5

Tôi đang cố gắng lấy chuỗi từ trang web. Tôi sử dụng mô-đun requests để gửi yêu cầu GET.Văn bản từ trang web xuất hiện dưới dạng Gibberish thay vì tiếng Hebrew

text = requests.get("http://example.com") #send GET requests to the website 
print text.text #print the variable 

Tuy nhiên, đối với một số lý do, các văn bản xuất hiện trong Gibberish thay vì tiếng Hebrew:

<div> 
<p>שרת</p> 
</div> 

Tough khi tôi sniff lưu lượng với Fiddler hoặc xem trang web trong trình duyệt của tôi, tôi nhìn thấy nó bằng tiếng Hebrew :

<div> 
<p>שרת</p> 
</div> 

Bằng cách này, các mã html chứa thẻ meta định nghĩa mã hóa, mà là utf-8. Tôi đã cố gắng mã hóa văn bản thành utf-8 nhưng nó vẫn ở dạng vô nghĩa. Tôi đã cố gắng deocde nó bằng cách sử dụng utf-8, nhưng nó ném UnicodeEncodeError ngoại lệ. Tôi đã tuyên bố rằng tôi đang sử dụng utf-8 trong dòng đầu tiên của tập lệnh. Hơn nữa, sự cố cũng xảy ra khi tôi gửi yêu cầu với mô-đun tích hợp trong mô-đun urllib.

Tôi đã đọc Unicode HOWTO nhưng vẫn không thể quản lý để khắc phục. Tôi cũng đọc nhiều chủ đề ở đây (cả về ngoại lệ UnicodeEncodeError và về lý do tại sao hebrew biến thành vô nghĩa trong Python) nhưng tôi vẫn không thể quản lý để khắc phục nó.

Tôi đang sử dụng Python 2.7.9 trên máy tính Windows. Tôi đang chạy kịch bản của tôi trong Python IDLE.

Xin cảm ơn trước.

+0

Bạn nên sử dụng .content thay vì văn bản –

Trả lời

6

Máy chủ không khai báo mã hóa chính xác.

>>> print u'שרת'.encode('latin-1').decode('utf-8') 
שרת 

Đặt text.encoding trước khi truy cập text.text.

text = requests.get("http://example.com") #send GET requests to the website 
text.encoding = 'utf-8' # Correct the page encoding 
print text.text #print the variable 
+0

Cảm ơn bạn rất nhiều! Tôi sẽ không bao giờ tự tìm thấy nó. Cảm ơn một lần nữa! – ohad987

Các vấn đề liên quan