BeautifulSoup копирует заголовок таблицы в нижний колонтитул - PullRequest
0 голосов
/ 12 июня 2018

У меня есть HTML-таблица, в которой есть только <thead>, но нет <tfoot>.Нужно использовать BeautifulSoup для копирования верхнего колонтитула в нижний колонтитул.

Таблица выглядит так:

<table id="example" class="display" style="width:100%">
    <thead>
        <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Office</th>
            <th>Age</th>
            <th>Start date</th>
            <th>Salary</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Ashton Cox</td>
            <td>Junior Technical Author</td>
            <td>San Francisco</td>
            <td>66</td>
            <td>2009/01/12</td>
            <td>$86,000</td>
        </tr>          
    </tbody>
</table>

Однако мне нужно, чтобы она выглядела так:

<table id="example" class="display" style="width:100%">
    <thead>
        <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Office</th>
            <th>Age</th>
            <th>Start date</th>
            <th>Salary</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Ashton Cox</td>
            <td>Junior Technical Author</td>
            <td>San Francisco</td>
            <td>66</td>
            <td>2009/01/12</td>
            <td>$86,000</td>
        </tr>          
    </tbody>
    <tfoot>
        <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Office</th>
            <th>Age</th>
            <th>Start date</th>
            <th>Salary</th>
        </tr>
    </tfoot>
</table>

Я думаю, мне нужно использовать insert_after,но я изо всех сил пытаюсь увидеть, как я копирую содержимое thead, создаю новый tfoot и вставляю значения <tr> и <th>.Сначала я попытался перебрать объект и создать теги и insert_after:

table_headers = soup.find_all('th')

Любые идеи?

1 Ответ

0 голосов
/ 12 июня 2018

Делает ли это то, что вы хотите?Я был удивлен, что вставка объекта soup.thead.tr удалила его из элемента.Обратите внимание на copy()

    from copy import copy

    orig = """<table id="example" class="display" style="width:100%">
        <thead>
            <tr>
                <th>Name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Age</th>
                <th>Start date</th>
                <th>Salary</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Ashton Cox</td>
                <td>Junior Technical Author</td>
                <td>San Francisco</td>
                <td>66</td>
                <td>2009/01/12</td>
                <td>$86,000</td>
            </tr>
        </tbody>
    </table>
    """

    soup = BeautifulSoup(orig)
    tfoot = soup.new_tag('tfoot')
    # XXX: if you don't copy() the object the <tr> element is removed from <thead>
    tfoot.append(copy(soup.thead.tr))
    soup.tbody.insert_after(tfoot)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...