BeautifulSoup неправильно извлекает div - PullRequest
0 голосов
/ 02 апреля 2019

BeautifulSoup не извлекает div, который я хочу правильно.Я не уверен, что я делаю неправильно.Вот HTML:

                <div id='display'>
                      <div class='result'>
                           <div>text0 </p></div>
                           <div>text1</div>
                           <div>text2</div>
                       </div>
                  </div>

А вот мой код:

div = soup.find("div", {"class": "result"})
print(div)

Я вижу это:

<div class="result">
<div>text0 </div></div>

То, что я ожидаю, это:

<div class="result">
<div>text0</div>
<div>text1</div>
<div>text2</div>
</div>

Это работает, как и ожидалось, если я уберу тег </p>.Другими словами, тег </p>, кажется, отбрасывает синтаксический анализатор.

Edit:

Это работает, как и ожидалось, в Python 2.7.12, Beautifulsoup4 версии 4.5.1.Но не работает на Python 3.6.4, beautifulsoup4 версия 4.7.1.Не уверен, что виновником является версия Python или версия bs4 (более вероятно).

Может кто-нибудь помочь?

1 Ответ

1 голос
/ 02 апреля 2019

Не вижу проблем с использованием select

from bs4 import BeautifulSoup as bs
html = '''
<div id='display'>
                      <div class='result'>
                           <div>text0 </p></div>
                           <div>text1</div>
                           <div>text2</div>
                       </div>
                  </div>
                  '''
soup = bs(html)
soup.select('.result')
...