Задать вопрос
@gowa66

Кодировка Китайские символы при парсинге?

Пишу парсер для китайского интернет магазина.
from urllib.request import urlopen
from urllib.parse import urljoin
from lxml.html import fromstring

URL = 'http://list.suning.com/0-258003-0.html'
ITEM_PATH = '.clearfix .product .border-out .border-in .wrap .res-info .sell-point'

def parse_items():
    f = urlopen(URL)
    list_html = f.read().decode('utf-8')
    list_doc = fromstring(list_html)
    for elem in list_doc.cssselect(ITEM_PATH):
        a = elem.cssselect('a')[0]
        href = a.get('href')
        title = a.text
        em = elem.cssselect('em')[0]
        title2 = em.text
        print(href, title, title2)

def main():
    parse_items()

if __name__ == '__main__':
    main()


получаю ошибку

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)


Кто пояснит за кодировку?
  • Вопрос задан
  • 1024 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 2
@Fixid
Перейдите на python3, там все строки изначально Unicode. Если останетесь на python2, то нельзя использовать str, в инете есть альтернативные методы работы со строками

Попробуйте без decode
И покажите type объекта который вызывает ошибку
Ответ написан
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Вы пытаетесь перекодировать Unicode в ASCII с заблаговременно прогнозируемым отказом, в 7 бит unicode не поместится.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы