Я относительный новичок на Python. У меня есть html-страница со таблицей, подобной приведенной ниже. То, что я хотел бы анализировать и обрабатывать эти данные более аккуратным образом более питоническим способом.Есть ли еще pythonic способ разбора моей таблицы с помощью Beautifulsoup
<table border="1">
<tr><td><b>Test Results</b></td><td><b>Log File</b></td><td><b>Passes</b></td><td><b>Fails</b></td></tr>
<tr><td><b>Test suite A</b></td><td><a href="A_logs.html">Logs</a></td><td><b>10</b></td><td><b>0</b></td></tr>
<tr><td><b>Test suite B</b></td><td><a href="B_logs.html">Logs</a></td><td><b>20</b></td><td><b>0</b></td></tr>
<tr><td><b>Test suite C</b></td><td><a href="C_logs.html">Logs</a></td><td><b>15</b></td><td><b>0</b></td></tr>
</table>
Использование BeautifulSoup Я проанализировал таблицу.
results_table = tables[0] # This will get the first table on the page.
table_rows = my_table.findChildren(['th','tr'])
for i in table_rows:
text = str(i)
print("All rows:: {0}\n".format(text))
if "Test suite A" in text:
print("Test Suite: {0}".format(text))
# strip out html characters
list = str(BeautifulSoup(text).findAll(text = True))
# strip out any further stray characters such as [,]
list = re.sub("[\'\[\]]", "", list)
list = list.split(',') # split my list entries by comma
print("Test: {0}".format(str(list[0])))
print("Logs: {0}".format(str(list[1])))
print("Pass: {0}".format(str(list[3])))
print("Fail: {0}".format(str(list[4])))
Это мой код, который делает все, что я хочу. Мне просто интересно, есть ли более питонический способ сделать это. Игнорирование операторов печати, поскольку я планирую поместить это в свой собственный метод, проходящий в таблице результатов, и возвращать пропуск, терпеть неудачу, регистрировать, тестировать.
Так ..
def parseHtml(results_table)
# split out all rows in my table into a list
table_rows = my_table.findChildren(['th','tr'])
for i in table_rows:
text = str(i)
if "Test suite A" in text:
# strip out html characters
list = str(BeautifulSoup(text).findAll(text = True))
# strip out any further stray characters such as [,]
list = re.sub("[\'\[\]]", "", list)
# split my list entries by comma
list = list.split(',')
return (list[0],list[1],list[3],list[4])
начало использования, не используя список как имя переменной, также почему вы выбрали find_all как str? –
Что именно вы хотите извлечь? –
Чтобы начать с, не называйте переменную 'list'. –