Получить таблицу с максимальным количеством строк на странице, используя BeautifulSoup - PullRequest
1 голос
/ 11 июня 2010

Может кто-нибудь сказать мне, как я могу получить таблицу в HTML-странице, которая имеет наибольшее количество строк?Я использую BeautifulSoup.

Хотя есть одна маленькая проблема.Иногда кажется, что одна таблица вложена в другую.

<table>
    <tr>
        <td>
            <table>
                <tr>
                    <td></td>
                    <td></td>
                    <td></td>
                </tr>
                <tr>
                    <td></td>
                    <td></td>
                    <td></td>
                </tr>
                <tr>
                    <td></td>
                    <td></td>
                    <td></td>
                </tr>
            </table>
        <td>
    </tr>
</table>

При выполнении кода table.findAll('tr') будут подсчитываться все дочерние строки таблицы и строки вложенной таблицы под ним.В родительской таблице всего одна строка, а во вложенной - три, и я бы посчитал, что это самая большая таблица.Ниже приведен код, который я использую для поиска самой большой таблицы в настоящее время, но он не принимает во внимание вышеупомянутый сценарий.

soup = BeautifulSoup(html)

#Get the largest table
largest_table = None
max_rows = 0
for table in soup.findAll('table'):
    number_of_rows = len(table.findAll('tr'))
    if number_of_rows > max_rows:
        largest_table = table
        max_rows = number_of_rows

Я действительно потерян с этим.Любая помощь, ребята?

Заранее спасибо

1 Ответ

3 голосов
/ 11 июня 2010

Рассчитать число_кровок следующим образом:

number_of_rows = len(table.findAll(lambda tag: tag.name == 'tr' and tag.findParent('table') == table))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...