将HTML表解析为CSV的最佳方法

Nic*_*ick 3 c# html-parsing

我必须从现有网站上获取一些产品数据以放入数据库.数据全部采用HTML表格格式,模型编号是唯一的,但每个产品可以有任意数量的不同属性(因此我需要解析的表格都有不同的列和标题).

<table>
<tr>
<td>Model No.</td>
<td>Weight</td>
<td>Colour</td>
<td>Etc..</td>
</tr>
<tr>
<td>8572</td>
<td>12 Kg</td>
<td>Red</td>
<td>Blah..</td>
</tr>
<tr>
<td>7463</td>
<td>7 Kg</td>
<td>Blue</td>
<td>Blah..</td>
</tr>
<tr>
<td>8332</td>
<td>42 Kg</td>
<td>Yellow</td>
<td>Blah..</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

这是我正在寻找的CSV输出格式:

Model-No,Attribute-Name,Attribute-Value
8572,"Weight","12 Kg"
8572,"Colour","Red"
8572,"Etc","Blah.."
7463,"Weight","7 Kg"
7463,"Colour","Blue"
7463,"Etc","Blah.."
8332,"Weight","42 Kg"
8332,"Colour","Yellow"
8332,"Etc","Blah.."
Run Code Online (Sandbox Code Playgroud)

由于表格似乎都是有效的xhtml我可能会将每个表格加载到XmlDocument中,但有没有人有任何建议可以更好地完成此操作?谢谢.

Ali*_*tad 5

我可以想到3种方法:

  • HTML Agility pack:加载HTML并循环遍历元素并编写CSV.这里有一些例子.
  • 使用正则表达式解析表.
  • 如果您的HTML是XHTML(有效的XML),您可以编写XSLT模板以自动创建CSV.这是最巧妙的,但不是最简单的一个.