BeautifulSoup,如何停止在某些标签上执行

时间:2013-04-09 10:10:45

标签: python python-2.7 beautifulsoup

HTML我正在解析:

<h2 class="tabellen_ueberschrift al">Cards</h2>
<table class="tabelle_grafik lh" cellpadding="2" cellspacing="1">
        <tr>
            <th class="al" colspan="3">CA Osasuna</th>              
        </tr>
                                                            <tr class="hell">
        <a href="example.com" class="fb s10" title="Sisi">Sisi</a>
        </tr>
                                                            </td></table>

<table class="tabelle_grafik lh" cellpadding="2" cellspacing="1">
        <tr>
            <th class="al" colspan="3">FC Barcelona</th>                
        </tr>
        <a href="example.com" class="fb s10" title="Busquets">Busquets</a>
        </tr>
                                                            </td></table>

我正在尝试计算a标签的所有实例,但是我需要为每个足球队做一次这种情况。所以当它遇到第二个<table class="...">时,计数器需要从0开始计数(我的意思是必须有两个独立的计数器)。

到目前为止,我只设法提出了计数的代码,但总结了它。所以我只有一个相同的柜台。

我正在努力告诉Python如何停止并引入第二个计数器。

我没有在我的代码中进行复制,因为直到我坚持这一点非常简单。任何想法都非常欢迎!

1 个答案:

答案 0 :(得分:2)

每桌计数:

for table in soup.find('table', class_='tabelle_grafik'):
    count = len(table.find('a'))

当然,你需要每个计数。将它们存储在字典中,打印它们,将它们添加到列表中等等。

将它们存储在每个俱乐部字典示例中:

clubs = {}

for table in soup.find_all('table', class_='tabelle_grafik'):
    club_name = table.find('th', class_='al').text
    count = len(table.find_all('a'))
    clubs[club_name] = count