Документацията за библиотеката за заявки казва товаrequest.get () методът винаги връща unicode. Но когато се опитвам да разбера какъв код е върнат, виждам "windows-1251". Това е проблем. Когато се опитам да получа request.get (url) .text, има грешка, защото съдържанието на текущия url съдържа кирилица.
import requests
url = "https://www.weblancer.net/jobs/"
r = requests.get(url)
print r.encoding
print r.text
Имам нещо такова:
windows-1251
UnicodeEncodeError: "ascii" codec can"t encode characters in position 256-263: ordinal not in range(128)
Дали това е проблем на Python 2.7 или изобщо няма проблем? Помогни ми
Отговори:
2 за отговор № 1От документи:
Заявките автоматично ще декодират съдържание от сървъра. най-много Unicode символи се декодират безпроблемно.
Когато правите заявка, заявките прави обосновани предположения за кодиране на отговора въз основа на HTTP заглавки.
requests.get().encoding
ви казва кодирането, което е било използвано за конвертиране на битовия поток от сървъра в Unicode текста, който е в отговора.
Във вашия случай е вярно: заглавията в отговора казват, че наборът от знаци е windows-1251
Грешката, която имате, е след това. Питонът, който използвате, се опитва да кодира Unicode в ascii, за да го отпечата и не успее.
Можете да кажете печат r.text.encode(r.encoding)
... което е същият резултат като предложението на Падерик в коментарите - това е r.content
.
Забележка:
requests.get().encoding
е lvar: можете да го настроите на това, което искате, ако се е допуснало погрешно.