Обновление последних 4 <td>в каждом <tr>beautifulsoup - PullRequest
0 голосов
/ 11 июля 2020

У меня есть файл html, содержащий (он создан из PrettyTable python lib):

<table>
<tr>
<td> 1 </td>
<td> 1 </td>
<td> 1 </td>
</tr>
<tr>
<td> 2 </td>
<td> 2 </td>
<td> 2 </td>
</tr>
<tr>
<td> 3 </td>
<td> 3 </td>
<td> 3 </td>
</tr>
</table>

Я хотел бы обновить последние 2 ячейки каждой строки, чтобы иметь другой фон, используя Beautifulsoup . так, например, обновите его до:

<table>
<tr>
<td> 1 </td>
<td style="background-color:blue;text-align:center;"> 1 </td>
<td style="background-color:blue;text-align:center;"> 1 </td>
</tr>
<tr>
<td> 2 </td>
<td style="background-color:blue;text-align:center;"> 2 </td>
<td style="background-color:blue;text-align:center;"> 2 </td>
</tr>
<tr>
<td> 3 </td>
<td style="background-color:blue;text-align:center;"> 3 </td>
<td style="background-color:red;text-align:center;"> 3 </td>
</tr>
</table>

любая помощь будет с благодарностью получена

matt

1 Ответ

1 голос
/ 11 июля 2020

Попробуйте что-нибудь в этом роде:

from bs4 import BeautifulSoup as bs
options = """[your html above]"""
for i in range(2,4):
    targets = soup.select(f'tr td:nth-child({i})')
    for target in targets:            
        target['style']="background-color:blue;text-align:center;"
soup

Результат должен быть вашим ожидаемым html в вопросе.

...