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

Как правильно распарсить блок на Python?

Почему Beautiful Soup неправильно парсит этот блок?
Вот упрощенный код, на нем баг тоже воспроизводится:
soupIndex = BeautifulSoup('''<div class="vk-comment">
                    <div class="vk-avatar">
                        <img src="img.png">
                    </div>
                    <div class="vk-comment-name">
                        Имя автора
                    </div>
                    <div class="vk-comment-text">
                        <p>
                            Текст коммента
                        </p>
                    </div>
                    <div class="vk-comment-date">
                        17 минут назад
                    </div>
                </div>''')
template = soupIndex.select_one('.vk-comment')
print(template)


В данной вариации при выводе появляются два лишних div-а... Если длину комментария увеличить в несколько раз, тогда начинает копироваться блок vk-comment-date. Я так понимаю Чем длиннее в символьном представлении этот блок, тем большее количество символов дублируется с конца.

UPD: в качестве парсера по умолчанию стоит html5lib, ОС - Windows 7. Пробовал html parser, там вообще какая-то ахинея творится, тэгу img, например добавляется закрывающий тэг.
  • Вопрос задан
  • 1110 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@AlexRAV Автор вопроса
Проблема была в неправильном отображении в консоли, записал данные в файл, там нормально отображаются.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@kyklaed
вам нужны данные из всех div ?

for i in soupIndex.find_all('div'):
    print(i['class'])
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
предобрабатывай

ты же, наверно, это из АПИ какого-то получаешь, проверяй, что за данные приходят

P.s. рекомендую lxml
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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