【问题标题】:Extract Unique Class Names from Tags从标签中提取唯一的类名
【发布时间】:2020-01-10 22:36:13
【问题描述】:

我正在(对我而言)将相对大量的数据抓取到一个 beautifulsoup 对象中。典型的抓取结果是 600 页或更多的 html 标记,其中包含许多嵌套表。我试图更好地理解结构,以便有效地将数据从表中提取出来。

这些汤对象中最多有 500 个表,其中包含许多“重复”表类。下面是两个例子。

<table class="TableClass1">
<table class="TableClass2">

在我的 500 个表格的文档中,每个表格可能有 250 个,因此在浏览 600 页 html 时很难看出只有两种独特的类型。

我如何才能从汤对象中提取仅用于表标签的唯一类名列表?结果将显示如下列表:

<table class="TableClass1">
<table class="TableClass2">

【问题讨论】:

    标签: html python-3.x web-scraping beautifulsoup


    【解决方案1】:

    如果我理解正确,您只想为 &lt;table&gt; 标签显示唯一的类名。您可以为此使用set()(或collections.Counter)。

    例如:

    txt = '''
    <table class="TableClass1"></table>
    <table class="TableClass2"></table>
    <table class="TableClass2"></table>
    <table class="TableClass2"></table>
    '''
    
    from collections import Counter
    from bs4 import BeautifulSoup
    
    soup = BeautifulSoup(txt, 'html.parser')
    
    print('Unique class names:')
    uniq = set(' '.join(t['class']) for t in soup.select('table[class]'))
    print( uniq )
    
    print()
    
    print('Count of class names:')
    c = Counter(' '.join(t['class']) for t in soup.select('table[class]'))
    print( c )
    

    打印:

    Unique class names:
    {'TableClass1', 'TableClass2'}
    
    Count of class names:
    Counter({'TableClass2': 3, 'TableClass1': 1})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      相关资源
      最近更新 更多