Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2017, 10:52   #1
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию lxml получить текст с переносами

Здравствуйте!
Надеюсь, тут кто-то есть, кто знает lxml и работал с ним в Питоне... Хотя сомневаюсь... Но вдруг.
Вопрос вот какой:
Пытаюсь получить текст песни. Например, с этой страницы.
Получить, конечно, хочется текст в "привычном" виде. Сейчас делаю так, получая текст по абзацам:
Код:
page = html.parse(songs[7][3][5][2])
XPath = '//*[@id="wrap"]/div[1]/div[2]/div[1]/article'
e = page.xpath(XPath)
song_text = e[0].getchildren()#.text_content()
for el in song_text:
    print(el.text_content())
Но text_content() берёт текст, удаляя все <br>, которые в html переносят строку. Как можно получить текст построчно или с переносом строк?
Если заменить text_content() на text, то получаю строку, но только до <br>...

Последний раз редактировалось Ship_1; 21.03.2017 в 11:15.
Ship_1 вне форума Ответить с цитированием
Старый 21.03.2017, 13:43   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

tostring?
http://lxml.de/api/lxml.etree-module.html#tostring
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.03.2017, 14:22   #3
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Спасибо за предложение Видел я такую функцию в различных примерах. Но у меня элемент "lxml.html.HtmlElement", а у него такого нет...
У меня складывается впечатление, что кроме Вас в форуме в Питон вообще больше никто не заходит, кто с ним работает Третий вопрос в двух ветках, и во всех случаях ответы только от Вас. Спасибо!
Ship_1 вне форума Ответить с цитированием
Старый 21.03.2017, 14:56   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так в etree.tostring передается же элемент первым параметром.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.03.2017, 15:41   #5
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

О! Появились строки с <br>! Ну всё, дальше уже дело техники Спасибо огромное!
На всякий случай, если вдруг кому ещё.
Код:
import xml.etree.ElementTree as etree

page = html.parse(songs[7][3][5][2])
XPath = '//*[@id="wrap"]/div[1]/div[2]/div[1]/article'
e = page.xpath(XPath)
song_text = e[0].getchildren()#.text_content()
for el in song_text:
    print(etree.tostring(el, encoding='utf-8').decode('utf-8'))
* выделенное курсивом добавлять по необходимости
Ship_1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить текст из файла Nyiann Общие вопросы C/C++ 4 19.10.2016 21:24
Получить текст из txt nibufep PHP 6 23.12.2014 19:41
Работа с переносами Lotos_45 JavaScript, Ajax 0 06.03.2013 08:05
Регулярки, получить текст между Abuhamed PHP 4 28.08.2012 23:55
Дан файл, содержащий текст, записанный строчными русскими буквами. Получить в др.файле тот же текст, develish151 Microsoft Office Word 4 05.05.2010 13:20