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版本(更有可能)。
有人可以帮忙吗?
答案 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')