/ / Python 2.7, библиотека с искания, не може да се получи unicode - python, parsing, unicode, python-requests

Python 2.7, Заявки библиотека, не може да получи unicode - python, parsing, unicode, python-requests

Документацията за библиотеката за заявки казва това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: можете да го настроите на това, което искате, ако се е допуснало погрешно.