Как использовать find_all с BeautifulSoup для поиска нескольких тегов или классов? - PullRequest
0 голосов
/ 17 февраля 2019

Я очищаю некоторый HTML, который отформатирован следующим образом:

<div class="doccontent">
<h3> Section Title 1 </h3>
<div class="line"> My first line </div>
<div class="line> My second line </div>
<div class="linenumber"> text i don't need </div>

<h3> Section Title 2 </h3>
<div class="line"> My third line </div>
<div class="chapter">Chapter four</div>
<div class="line> My fourth line </div>
</div>

Я хочу только захватить текст h3 и class = "line".Я попробовал два способа.Первый:

for lines in full_text:
    for booktitle in lines.find("h3"):
        linesArr.append(booktitle)
    for line in lines.find_all(class_='line'):
        linesArr.append(line)

Это добавляет все заголовки книг в начало списка, затем начинает работать со строками.

Второе:

for lines in full_text:
    for line in lines.find_all(['h3', class_="line"]):
        linesArr.append(line)

Второе мне кажется более многообещающим, но есть синтаксическая ошибка. Документация по BS4 не охватывает, как искать список тегов и классов,Любая помощь с оценкой.

1 Ответ

0 голосов
/ 17 февраля 2019

Как уже упоминалось в комментариях, вы можете использовать синтаксис css или для указания нескольких селекторов css и передать их для выбора

data = [item.text for item in soup.select("h3 , .line")]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...