BeautifulSoup无法正确提取div

时间:2019-04-02 09:26:04

标签: beautifulsoup html-parsing

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>标记似乎正在抛弃解析器。

编辑:

这可以在Python 2.7.12,beautifulsoup4版本4.5.1上正常工作。但不适用于beautifulsoup4版本4.7.1的Python 3.6.4。不确定罪魁祸首是python版本还是bs4版本(更有可能)。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我认为使用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')