读取html中的table 放在数组中

来自星星的你_ 2016-01-22 02:04:53
此html文件有点特殊,1. 无<body>开头 2.<table>title 不在<tr>标签中 3.image内容格<td>中带宽度属性 width = "80"

我现在想读取table中的数值,放到数组中以便我存入数据库 ,可能html不只这么多列,列名和底下的数值能对应起来, 还要注意这一列 <th><p align="center">X(MM)</p></th> 括号中的(MM)要加到地下的数值中存储,有可能()是其他单位 比如X(CM)\X(INCH)

这样的文件我该用什么方法读比较快速?该怎么读?


<html>
<head>
<title>report</title>
</head>
<span style="float:left;"></span>
<center></center><br><br>
<table border="2" width=100% >
<th><p align="center">Id</p></th>
<th><p align="center">Title</p></th>
<th><p align="center">X(MM)</p></th>
<th><p align="center">Image</p></th>
<!--/TABLE_TITLE-->
<tr>
<td>1</td>
<td>iphone</td>
<td>135.119923</td>
<td width = "80"><a href="i0.jpg" target="_blank"><img src = "i0.jpg" width = "80"></a></td>
</tr>
<tr>
<td>2</td>
<td>ipad</td>
<td>156.119923</td>
<td width = "80"><a href="i1.jpg" target="_blank"><img src = "i1.jpg" width = "80"></a></td>
</tr>
</table>
</body>
</html>





...全文
302 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2016-01-24
  • 打赏
  • 举报
回复
红字看的不是很懂,不论怎样,<tr>...</tr>是清晰的,用正则提取每一行是可行的
  • 打赏
  • 举报
回复
关于你用红字标注的那些话,我就懒得细看了。根本的原则就在于,你要知道这个 html 解析,而不是什么简单地用什么正则去匹配什么单词儿。当你的一个 html 解析器把它解析为一个纯粹的 html 数据结构之后,再去按照你对 html 结构的理解去组织你的查询遍历、挖掘算法。 你不需要纠结于给出什么匹配单词儿的一堆混乱的表达式!因为你首先得到的是一个真正的 html 树结构。这就是关键!
  • 打赏
  • 举报
回复
xml的语法是比较严格的,而html则并没有那么严格,有许多 element 并没有封口的结束部分,甚至像你这种明显是写错了的代码也可以用 HtmlAgilityPack 进行 html 解析。 所以,要使用 HtmlAgilityPack 来解析 html 代码。它具有很好的容错能力。
  • 打赏
  • 举报
回复
这是一个普通的htm,可以这样解析出来 table(假设文件放到了windows桌面的一个text.dat文件)
var file = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "test.dat");
var s = File.ReadAllText(file);
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(s);
var r = doc.DocumentNode.Descendants("table").First();
  • 打赏
  • 举报
回复
转换成成xml最省事
  • 打赏
  • 举报
回复
无body开头?但有body结尾,那就不是标准的xml了啊,通过xml读取就不行了,当然这种事情可以通过replace或者insert来使html变成标准的xml格式,然后就可以按xml读取 另外如果你table部分的格式就是这种标准格式的话,用正则获取也不困难
wish907 2016-01-22
  • 打赏
  • 举报
回复
第一反应当做一个XML来读

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧