使用 python 将 html table 转换为 csv
convert html table to csv using python
我有一个字符串,其中包含通过 mechanize
库提取的 html
文件的源代码。
html
文件将始终包含这样的 table。我想将 table 转换为 CSV Format
。
解决同一问题的几个 SO 问题具有 table 和 class 名称。
但是我的 table 没有 class 属性。
那我该怎么办...?
<table border=1 cellPadding="2" cellSpacing="0" width="75%" bordercolor="#000000" >
<tr bgcolor="mediumblue">
<td width="20%"><p align="center"><font face="Arial" color="white" size="2"><strong>SUB CODE</strong></font></p></td>
<td width="26%"><p align="left"><font face="Arial" color="white" size="2"><strong>SUB NAME</strong></font></p></td>
<td width="13%"><p align="left"><font face="Arial" color="white" size="2"><strong>THEORY</strong></font></p> </td>
<td width="10%"><p align="left"><font face="Arial" color="white" size="2"><strong>PRACTICAL</strong></font></p> </td>
<td width="17%"><p align="left"><font face="Arial" color="white" size="2"><strong>MARKS</strong></font></p></td>
<td width="14%"><p align="center"><font face="Arial" color="white" size="2"><strong>GRADE</strong></font></p></td>
</tr>
<tr bgColor="#ffffff">
<td align="middle"><font face="Arial" size=2> 301</font></td>
<td align="left" ><font face="Arial" size=2>ENGLISH CORE</font></td>
<td align="left" ><font face="Arial" size=2>067</font></td>
<td align="left" ><font face="Arial" size=2></font></td>
<td align="left" ><font face="Arial" size=2>067 </font></td>
<td align="middle"><font face="Arial" size=2>C2</font></td>
</tr>
</table>
pandas 有一个 neat way to read html tables.
import pandas as pd
html_data = '''
<table border=1 cellPadding="2" cellSpacing="0" width="75%" bordercolor="#000000" >
<tr bgcolor="mediumblue">
<td width="20%"><p align="center"><font face="Arial" color="white" size="2"><strong>SUB CODE</strong></font></p></td>
<td width="26%"><p align="left"><font face="Arial" color="white" size="2"><strong>SUB NAME</strong></font></p></td>
<td width="13%"><p align="left"><font face="Arial" color="white" size="2"><strong>THEORY</strong></font></p> </td>
<td width="10%"><p align="left"><font face="Arial" color="white" size="2"><strong>PRACTICAL</strong></font></p> </td>
<td width="17%"><p align="left"><font face="Arial" color="white" size="2"><strong>MARKS</strong></font></p></td>
<td width="14%"><p align="center"><font face="Arial" color="white" size="2"><strong>GRADE</strong></font></p></td>
</tr>
<tr bgColor="#ffffff">
<td align="middle"><font face="Arial" size=2> 301</font></td>
<td align="left" ><font face="Arial" size=2>ENGLISH CORE</font></td>
<td align="left" ><font face="Arial" size=2>067</font></td>
<td align="left" ><font face="Arial" size=2></font></td>
<td align="left" ><font face="Arial" size=2>067 </font></td>
<td align="middle"><font face="Arial" size=2>C2</font></td>
</tr>
</table>
'''
print pd.read_html(html_data)[0].to_csv(index=False, header=False)
当 html 中有多个 table 时,您可以检查 table 的列名称,以删除不需要的。
我有一个字符串,其中包含通过 mechanize
库提取的 html
文件的源代码。
html
文件将始终包含这样的 table。我想将 table 转换为 CSV Format
。
解决同一问题的几个 SO 问题具有 table 和 class 名称。 但是我的 table 没有 class 属性。 那我该怎么办...?
<table border=1 cellPadding="2" cellSpacing="0" width="75%" bordercolor="#000000" >
<tr bgcolor="mediumblue">
<td width="20%"><p align="center"><font face="Arial" color="white" size="2"><strong>SUB CODE</strong></font></p></td>
<td width="26%"><p align="left"><font face="Arial" color="white" size="2"><strong>SUB NAME</strong></font></p></td>
<td width="13%"><p align="left"><font face="Arial" color="white" size="2"><strong>THEORY</strong></font></p> </td>
<td width="10%"><p align="left"><font face="Arial" color="white" size="2"><strong>PRACTICAL</strong></font></p> </td>
<td width="17%"><p align="left"><font face="Arial" color="white" size="2"><strong>MARKS</strong></font></p></td>
<td width="14%"><p align="center"><font face="Arial" color="white" size="2"><strong>GRADE</strong></font></p></td>
</tr>
<tr bgColor="#ffffff">
<td align="middle"><font face="Arial" size=2> 301</font></td>
<td align="left" ><font face="Arial" size=2>ENGLISH CORE</font></td>
<td align="left" ><font face="Arial" size=2>067</font></td>
<td align="left" ><font face="Arial" size=2></font></td>
<td align="left" ><font face="Arial" size=2>067 </font></td>
<td align="middle"><font face="Arial" size=2>C2</font></td>
</tr>
</table>
pandas 有一个 neat way to read html tables.
import pandas as pd
html_data = '''
<table border=1 cellPadding="2" cellSpacing="0" width="75%" bordercolor="#000000" >
<tr bgcolor="mediumblue">
<td width="20%"><p align="center"><font face="Arial" color="white" size="2"><strong>SUB CODE</strong></font></p></td>
<td width="26%"><p align="left"><font face="Arial" color="white" size="2"><strong>SUB NAME</strong></font></p></td>
<td width="13%"><p align="left"><font face="Arial" color="white" size="2"><strong>THEORY</strong></font></p> </td>
<td width="10%"><p align="left"><font face="Arial" color="white" size="2"><strong>PRACTICAL</strong></font></p> </td>
<td width="17%"><p align="left"><font face="Arial" color="white" size="2"><strong>MARKS</strong></font></p></td>
<td width="14%"><p align="center"><font face="Arial" color="white" size="2"><strong>GRADE</strong></font></p></td>
</tr>
<tr bgColor="#ffffff">
<td align="middle"><font face="Arial" size=2> 301</font></td>
<td align="left" ><font face="Arial" size=2>ENGLISH CORE</font></td>
<td align="left" ><font face="Arial" size=2>067</font></td>
<td align="left" ><font face="Arial" size=2></font></td>
<td align="left" ><font face="Arial" size=2>067 </font></td>
<td align="middle"><font face="Arial" size=2>C2</font></td>
</tr>
</table>
'''
print pd.read_html(html_data)[0].to_csv(index=False, header=False)
当 html 中有多个 table 时,您可以检查 table 的列名称,以删除不需要的。