Форум сайта python.su
0
Я новичек. Решил написать парсер для сайта 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
Отредактировано WalinoR (Сен. 9, 2015 13:37:17)
Прикреплённый файлы:
my_scrab.py (516 байт)
Офлайн
221
поздравляю вас, вы сталь стопятсот милионным человек задавшим этот вопрос. Приза вам никакого не полагается, но в качестве утешительного момента могу подсказать вам взять любую книгу и по Python2 и прочитать про Unicode, объекты.
Ну а если кратко, то все правильно у вас делается. Просто вы матчасть в нужном месте не знаете. Почитайте и разберетесь. Еще подсказка, это разные вещи:
'Привет' u'Привет'
Офлайн
3
WalinoR
На всякий случай вылаживаю .py файл
JOHN_16Я “сталь стопятсот милионным” +1: как это безобразие (имея такую строку) перевести в какую-нить кодировку, какая функция такую строку ест?
вы сталь стопятсот милионным человек задавшим этот вопрос
Отредактировано Iskatel (Сен. 9, 2015 01:28:27)
Офлайн
0
Все равно я не нашел ответа, как перекодировать 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….
Отредактировано WalinoR (Сен. 10, 2015 16:14:13)
Офлайн