Получение только текста верхнего уровня в теге HTML - PullRequest
0 голосов
/ 13 апреля 2020

Во-первых, я использую Python, а также Selenium и немного BeautifulSoup для веб-скрепинга. Может быть, они не могут работать вместе, но эту конкретную проблему мне пока не удалось решить. Я не верю, что это выше человеческого ума, но это не в моих усилиях. на немного больше. В основном тег 'body' довольно большой и содержит этот 'третий маленький' и другие подобные элементы.

Моя проблема, на первый взгляд, проста: я хочу просто получить это «январь 2020» отдельно от тега body. Но я не смог этого сделать. Если я использую «gettext» от BeautifulSoup, я получу весь остальной текст (например, «Перетащите сюда файл для вложения») без очевидного способа разделения. Да, есть некоторые новые строки, но есть и те, что в тексте выше, так что я не думаю, что это был бы безопасный способ. Я также использовал 'find_all' из BeautifulSoup, но он просто возвращает мне все содержащиеся теги, которые не включают в себя текст.

Есть ли способ? Я также безуспешно пытался использовать методы Selenium.

1 Ответ

1 голос
/ 13 апреля 2020
from bs4 import BeautifulSoup
html = """
<div class="summary">
            <div class="headingDate">09 January 2020 18:45 </div>
            <div class="callout"><span class="grey">Bob Smith</span>Student of the Week - JANUARY </div>


        </div>

        <div class="body">
            January 2020

                <div class="boxContent">                    


<div class="third-small">
    <div class="dropzone drop-smaller dz-clickable" id="d-3d3361e5-1e47-403c-a6b5-10137143f994">
        <div class="dz-message" data-dz-message="">
            <p class="centre"><i class="far fa-image biggest"></i></p>
            <p class="centre">Drag and drop file here to attach</p>
            <span class="bigLink"><i class="fa fa-upload"></i> Or choose file</span>
        </div>
"""


soup = BeautifulSoup(html, 'html.parser')

print(soup.find("div", class_="body").contents[0].strip())

Выход:

January 2020
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...