NoseのテストレポートファイルがHTML形式です。 Pythonでテキストの一部を抽出したいと思います。私はメッセージ部の電子メールでこれを送信します。Beautiful SoupからのHTMLデータには書式設定が必要
私は次のサンプルがあります。私は、ブラウザでファイルを開く場合は
<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ファイルから抽出したいテキストです。
私は次のように抽出するために管理しているPython27でBeautifulSoup4を使用してClass Fail Error Skip Success Total
Regression_TestCase 1 9 0 219 229
次のように
[<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
おかげで、リアズ
あなたのコードに感謝を関数を呼び出すために、私は、例えば、レポートhtmlファイルへのパスでデータを交換することができます@RiazLadhaniは 'StringIO(data)'部分をファイルオブジェクトで置き換えます。例えば、ファイル: –
から読み込みます。 'pd.read_html(open(path))'です。ありがとう。 – alecxe