使用Beautiful Soup 4提取特定列表项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Beautiful Soup 4提取特定列表项相关的知识,希望对你有一定的参考价值。

我试图从this webpage中提取“Balance”整数值,但我很难搞清楚如何隔离该列表项。

这是我目前的代码:

import bs4, requests

res = requests.get('https://live.blockcypher.com/btc/address/3CpfD1gBBdNW7orErj3YyNNSVpzndZ9aP9/')
res.raise_for_status()

soup = bs4.BeautifulSoup(res.text, 'html.parser')
elems = [elem for elem in soup.findAll('li') if 'Balance' in str(elem.text)]

print(elems)

然而,当我运行它时,我得到的是[]而不是实际的平衡值。

关于我哪里出错的任何想法?

答案

要获得该号码,您可以使用此:

balance = soup.find('span', text='Balance').parent.contents[3].strip()
print(balance)

输出:

9.06451275 BTC

说明:

soup.find('span', text='Balance')会给你这个<span class="dash-label">Balance</span>标签。

使用.parent.contents会将其父标记的内容作为列表。在该列表中,您需要的文本位于第3个索引中。

>>> for i, content in enumerate(soup.find('span', text='Balance').parent.contents):
...     print(i, content)
...
0

1 <span class="dash-label">Balance</span>
2 <br/>
3
            9.06451275 BTC


4 <br/>
5

6 <span class="dash-label">
                (-0.0500349 BTC unconfirmed)
              </span>
7

以上是关于使用Beautiful Soup 4提取特定列表项的主要内容,如果未能解决你的问题,请参考以下文章

4.2 使用 Beautiful Soup

python 使用Beautiful Soup从页面中提取数据

使用 Beautiful Soup 提取 css 链接

Beautiful Soup 4.2.0 文档

用 Beautiful Soup 提取 href

使用 Beautiful Soup 提取链接的等效正则表达式