首页 > 解决方案 > 根据标签、类和字符串内容提取html块

问题描述

我对 bf4 真的很陌生,我想从 html 页面获取特定内容。当我尝试以下代码时,我会得到许多具有相同标签和类的结果。所以我需要过滤更多。我感兴趣的块中有一个字符串内容。有没有办法另外按内容刮?任何贡献表示赞赏。

html_doc = requests.get('https://www.blockchain.com/bch/address/qqe2tae7hfga2zj5jj8mtjsgznjpy5rvyglew4cy8m')
soup = BeautifulSoup(html_doc.content, 'html.parser')
print(soup.find_all('span', class_='sc-1ryi78w-0 gCzMgE sc-16b9dsl-1 kUAhZx u3ufsr-0 fGQJzg'))

编辑:

我应该补充一点,内容如下所示。所以有一个字符串,我想为其提取值,但该值在下一个标签中。在这里,我想提取字符串 'Final Balance' 下的 3.79019103。

          Total Sent
         </span>
        </div>
       </div>
       <div class="sc-8sty72-0 kcFwUU">
        <span class="sc-1ryi78w-0 gCzMgE sc-16b9dsl-1 kUAhZx u3ufsr-0 fGQJzg" opacity="1">
         13794.11698089 BCH
        </span>
       </div>
      </div>
      <div class="sc-1enh6xt-0 jqiNji">
       <div class="sc-8sty72-0 kcFwUU">
        <div>
         <span class="sc-1ryi78w-0 gCzMgE sc-16b9dsl-1 kUAhZx sc-1n72lkw-0 lhmHll" opacity="1">
          Final Balance
         </span>
        </div>
       </div>
       <div class="sc-8sty72-0 kcFwUU">
        <span class="sc-1ryi78w-0 gCzMgE sc-16b9dsl-1 kUAhZx u3ufsr-0 fGQJzg" opacity="1">
         3.79019103 BCH
        </span>
       </div>
      </div>
     </div>
    </div>
   </div>

标签: pythonbeautifulsoup

解决方案


查找最终余额标签:

final_balance_tag = next(x for x in soup.find_all('span') if 'Final Balance' in x.text)

使用此标签,您可以直接跳转到下一个跨度标签。

final_balance_tag.findNext('span')

这使

<span class="sc-1ryi78w-0 gCzMgE sc-16b9dsl-1 kUAhZx u3ufsr-0 fGQJzg" opacity="1">
         3.79019103 BCH
        </span>

推荐阅读