Как получить список TD в строке TR с BeautifulSoup - PullRequest
0 голосов
/ 21 марта 2020

У меня есть простая таблица, которая выглядит следующим образом:

<tr>
<td>cell1</td>
<td>cell2</td>
</tr>
<tr>
<td>cell3</td>
<td>cell4</td>
</tr>

Я использую красивый суп, чтобы попытаться отобразить содержимое TD в значения объекта.

Я делаю следующее:

rows = soup.findAll('tr')
   for td in rows[1]:
      print(td.text)

Это печатает:

cell1
cell2
cell3
cell4

Я хочу получить указатель c для каждой ячейки. Например:

print(td[0])

Я получаю ошибку:

KeyError: 0

Как я могу получить индекс каждого TD?

Ответы [ 2 ]

0 голосов
/ 21 марта 2020

Другое решение.

from simplified_scrapy import SimplifiedDoc
html = '''
<tr>
<td>cell1</td>
<td>cell2</td>
</tr>
<tr>
<td>cell3</td>
<td>cell4</td>
</tr>
'''
doc = SimplifiedDoc(html)
trs = doc.trs.tds.text

print (trs[0][0])

Результат:

cell1
0 голосов
/ 21 марта 2020

Ну, конечно, когда вы получаете доступ к td, это уже один td не кратный td с, если вы хотите получить доступ к первым td, сделайте это следующим образом:

rows[1][0]

приведенный выше код означает доступ ЛЮБОЙ к первому элементу второго ряда. Если вы хотите получить только td s внутри строки, сделайте это следующим образом:

rows = soup.findAll('tr')
for row in rows:
    tds = row.findAll('td')
    print(tds[0])

код выше будет печатать каждый первый тд в каждой строке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...