gpt4 book ai didi

python - Beautiful Soup 中的 HTML 数据需要格式化

转载 作者:行者123 更新时间:2023-11-30 22:55:55 35 4
gpt4 key购买 nike

我有一个来自 Nose 的 html 格式的测试报告文件。我想用 Python 从中提取文本的某些部分。我将在消息部分通过电子邮件发送此信息。

我有以下示例:

<table>
<tr>
<th>Class</th>
<th class="failed">Fail</th>
<th class="failed">Error</th>
<th>Skip</th>
<th>Success</th>
<th>Total</th>
</tr>
<tr>
<td>Regression_TestCase</td>
<td class="failed">1</td>
<td class="failed">9</td>
<td>0</td>
<td>219</td>
<td>229</td>
</tr>
<tr>
<td><strong>Total</strong></td>
<td class="failed">1</td>
<td class="failed">9</td>
<td>0</td>
<td>219</td>
<td>229</td>
</tr>
</table>

如果我在浏览器中打开文件,我想要的文本格式如下所示:这是我想从 html 文件中提取的文本。

    Class             Fail Error    Skip    Success     Total
Regression_TestCase 1 9 0 219 229

在 Python27 中使用 BeautifulSoup4 我成功提取了以下内容:

[<th>Class</th>, <th class="failed">Fail</th>, <th class="failed">Error</th>, <th>Skip</th>, <th>Success</th>, <th>Total</th>]

[<td>Regression_TestCase.RegressionProject_TestCase2.RegressionProject_TestCase2</td>, <td class="failed">1</td>, <td class="failed">9</td>, <td>0</td>, <td>219</td>, <td>229</td>, <td><strong>Total</strong></td>, <td class="failed">1</td>, <td class="failed">9</td>, <td>0</td>, <td>219</td>, <td>229</td>]

我的代码如下:

def extract_pass_summary_from_selenium_report():
html_report = open(r"C:\test_runners\selenium_regression_test_5_1_1\ClearCore 501 - Regression Test\TestReport\SeleniumTestReport.html",'r').read()
soup = BeautifulSoup(html_report, "html.parser")

print soup.find_all('th')

print soup.find_all('td')

如何提取文本并保持格式如下:?

    Class             Fail Error    Skip    Success     Total
Regression_TestCase 1 9 0 219 229

谢谢,里亚兹

最佳答案

你可以单独使用BeautifulSoup来解决这个问题,但我会使用pandas它是 pandas.read_html()将 HTML 表解析为方便的数据框:

from StringIO import StringIO

import pandas as pd

data = """
<table>
<tr>
<th>Class</th>
<th class="failed">Fail</th>
<th class="failed">Error</th>
<th>Skip</th>
<th>Success</th>
<th>Total</th>
</tr>
<tr>
<td>Regression_TestCase</td>
<td class="failed">1</td>
<td class="failed">9</td>
<td>0</td>
<td>219</td>
<td>229</td>
</tr>
<tr>
<td><strong>Total</strong></td>
<td class="failed">1</td>
<td class="failed">9</td>
<td>0</td>
<td>219</td>
<td>229</td>
</tr>
</table>"""

df = pd.read_html(StringIO(data))
print(df)

打印:

[                     0     1      2     3        4      5
0 Class Fail Error Skip Success Total
1 Regression_TestCase 1 9 0 219 229
2 Total 1 9 0 219 229]

关于python - Beautiful Soup 中的 HTML 数据需要格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37212307/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com