Как я могу сохранить таблицу в переменной с каждой строкой в ​​качестве элемента и разделителя для различения столбцов, используя BeautifulSoup в Python? - PullRequest
0 голосов
/ 20 апреля 2011

Я хочу сохранить HTML-таблицу в переменной с именем store.

html = ['<html><body><p align="center"><table><tr><td>row1col1</td><td>row1col2</td><td>row1col3</td></tr><tr><td>row2col1</td><td>row2col2</td><td>row2col3</td></tr></table></html>']
soup = BeautifulSoup(''.join(html))
table = soup.find('table')
rows = table.findAll('tr')

store = []
row = []
numcols = []

for tr in rows:
    cols = tr.findAll('td')
    for td in cols:
        try:
            text = ''.join(td.find(text=True))
        except Exception:
            text = ''
        text = text+"|"
        row.append(text)
    store = ''.join(row)
print store

Выводится следующее:

row1col1|row1col2|row1col3|row2col1|row2col2|row2col3|

Я хотел бы хранить строки отдельно в "переменная store, чтобы у меня была каждая строка в одном элементе store с символом |символ, разделяющий каждый столбец.Прямо сейчас нет никакого способа различить, какие элементы идут в какой ряд.Есть идеи как это сделать?

1 Ответ

2 голосов
/ 20 апреля 2011

Полагаю, вы ищете что-то вроде этого:

html = '<html><body><p align="center"><table><tr><td>row1col1</td><td>row1col2</td><td>row1col3</td></tr><tr><td>row2col1</td><td>row2col2</td><td>row2col3</td></tr></table></html>'
soup = BeautifulSoup(html)
table = soup.find('table')
rows = table.findAll('tr')

store = []

for tr in rows:
  cols = tr.findAll('td')
  row = []
  for td in cols:
    try:
      row.append(''.join(td.find(text=True)))
    except Exception:
      row.append('')
  store.append('|'.join(row))

print '\n'.join(store)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...