在BeautifulSoup的官方文档中,给出了 find和 find_all两种 method,如果按类别获取信息,有如下语法:
soup.find_all('a') # 获取所有形如 <a> ... </a>的信息
如果我们想要按class得到呢?比如某一个信息在 div容器里面,它所对应的 class是 listBlk。例如
<div class="listBlk">
<!-- 分页 begin -->
<table cellspacing="0" style="margin:0 auto;"><tbody><tr><td><div class="pagebox"><span class="pagebox_pre_nolink">上一页</span> <span class="pagebox_num_nonce">1</span> <span class="pagebox_num"><a href="stock_news.php?ins=gn_stbk&p=2">2</a></span> <span class="pagebox_num"><a href="stock_news.php?ins=gn_stbk&p=3">3</a></span> <span class="pagebox_next"><a class="btn-next-wrap" href="stock_news.php?ins=gn_stbk&p=2">下一页</a></span> </div></td></tr></tbody></table> <!-- 分页 end -->
<div class="hs01"></div>
<style>
.list_009 a:link{text-decoration:none;};
</style>
<ul class="list_009">
<li><a href="https://finance.sina.com.cn/stock/s/2020-11-06/doc-iiznezxs0373492.shtml" target="_blank">9天8板:摘帽股智慧农业疯涨 顶级游资高位接力</a><span>(2020-11-06 20:24:00)</span></li>
<li><a href="https://finance.sina.com.cn/stock/stockptd/2020-05-11/doc-iirczymk1064242.shtml" target="_blank">超级大单:痛失全球第一宝座 6亿资金恐慌出逃千亿巨头</a><span>(2020-05-11 18:44:13)</span></li>
</ul><ul class="list_009"> </ul>
<div class="hs01"></div>
<!-- 分页 begin -->
<table cellspacing="0" style="margin:0 auto;"><tbody><tr><td><div class="pagebox"><span class="pagebox_pre_nolink">上一页</span> <span class="pagebox_num_nonce">1</span> <span class="pagebox_num"><a href="stock_news.php?ins=gn_stbk&p=2">2</a></span> <span class="pagebox_num"><a href="stock_news.php?ins=gn_stbk&p=3">3</a></span> <span class="pagebox_next"><a class="btn-next-wrap" href="stock_news.php?ins=gn_stbk&p=2">下一页</a></span> </div></td></tr></tbody></table> <!-- 分页 end -->
</div>
那么事实上,我们可以通过如下语法获得(即:声明 attrs里面的 class名称)
soup.find_all(name='div', attrs={'class': 'listBlk'})
最后顺便提一句如何获得tag的内容。例如
<span>Some text</span>
那么直接通过
tag.string
就可以得到
Some text
本文介绍了如何利用BeautifulSoup的find和find_all方法按类别和class属性获取HTML元素。通过设置attrs参数并指定class名称,可以精确地定位到具有特定class的元素。同时,还展示了如何获取标签内的内容。
4577

被折叠的 条评论
为什么被折叠?



