Найти - Пользователи
Полная версия: Парсер и русский язык
Начало » Python для новичков » Парсер и русский язык
1
WalinoR
Я новичек. Решил написать парсер для сайта work.ua в качестве тренировки. Так вот когда я вывожу rows - то получаю вместо русских букв \u0412\u0430\u043a\u0430\u043d …

def parse(html):
    soup = BeautifulSoup(html)
    table = soup.find('div', class_='left-side sj-bl')
    rows = table.findAll('a')
    print rows

А если выводить переменную table, то русские буквы выводятся нормально.
Почему так и как это можно исправить?

Windows 7
Python 2.7.10

На всякий случай выкладываю .py файл
JOHN_16
поздравляю вас, вы сталь стопятсот милионным человек задавшим этот вопрос. Приза вам никакого не полагается, но в качестве утешительного момента могу подсказать вам взять любую книгу и по Python2 и прочитать про Unicode, объекты.

Ну а если кратко, то все правильно у вас делается. Просто вы матчасть в нужном месте не знаете. Почитайте и разберетесь. Еще подсказка, это разные вещи:
'Привет'
u'Привет'
Iskatel
WalinoR
На всякий случай вылаживаю .py файл

Не надо “вылаживать” надо выкладывать.
JOHN_16
вы сталь стопятсот милионным человек задавшим этот вопрос
Я “сталь стопятсот милионным” +1: как это безобразие (имея такую строку) перевести в какую-нить кодировку, какая функция такую строку ест?
WalinoR
Все равно я не нашел ответа, как перекодировать rows. Если отдельно брать элементы с этого объекта, то все норм, а весь список все равно остается не читаемый.

type(rows{2}) = <class ‘bs4.element.Tag’>

type(rows) = <class ‘bs4.element.ResultSet’>

type(unicode(rows{2})) = <type ‘unicode’>

unicode(rows{2}) = <a href=“/jobs-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82+php/?days=124”>За 14 дней</a>

type(unicode(rows)) = <type ‘unicode’>

unicode(rows) = [<a href=“javascript:void(0)”>\u0417\u0430 30 \u0434\u043d\u0435\u0439</a>, <a href=“/jobs-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82+php/?days=125”>\u0417\u0430 30 \u0434\u043d\u0435\u0439</a>, <a href=“/jobs-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82+php/?days=124”>\u0417\u0430 14 \u0434\u043d\u0435\u0439</a>

В общем если тип данных ‘bs4.element.Tag’, то с кодировкой все в порядке. все русские буквы выводятся нормально. А как только тип ‘bs4.element.ResultSet’, который появляется при работе Findall(), то буквы отображаются через /u0441….
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB