首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

正则表达式提取网页单元格数据,该如何解决

2012-03-17 
正则表达式提取网页单元格数据HTMLHEADTITLECXOutputDetail.jsp/TITLETABLE classTableMain id

正则表达式提取网页单元格数据
<HTML><HEAD><TITLE>CXOutputDetail.jsp</TITLE>
<TABLE class=TableMain id=mainTable cellSpacing=0 cellPadding=0 
  width="100%" align=center border=1>
  <TBODY>
  <TR class="">
  <TD class=TableDetail2 width="13%">
  <DIV align=right>人员编号</DIV></TD>
  <TD class=TableDetail1 colSpan=4>&nbsp;T110006070354</TD>
  <TD class=TableDetail1 vAlign=center align=middle width="19%" 
  rowSpan=8>
  <TABLE cellSpacing=0 cellPadding=0 border=0>
  <TBODY>
  <TR>
  <TD><IMG id=ryxp 
  onclick="showphoto('110105000010091','9')" 
  src="CXOutputDetail_files/viewattch.jpg" width=130> </TD></TR>
  <TR>
  <TD align=middle><U onmouseover=changecouser(this) 
  onclick="showphoto('1101050000000010091')"><FONT color=blue 
  size=2>点击查看所有照片</FONT></U> </TD></TR></TBODY></TABLE></TD></TR>
  <TR class="">
  <TD class=TableDetail2 width="13%">
  <DIV align=right>姓名</DIV></TD>
  <TD class=TableDetail1 width="26%">&nbsp;梁伟志</TD>
  <TD class=TableDetail2 width="11%">
  <DIV align=right>别名绰号</DIV></TD>
  <TD class=TableDetail1 colSpan=2>&nbsp;</TD></TR>
  <TR class="">
  <TD class=TableDetail2 width="13%">
  <DIV align=right>性别</DIV></TD>
  <TD class=TableDetail1 width="26%">&nbsp;男</TD>
  <TD class=TableDetail2 width="11%">
  <DIV align=right>出生日期</DIV></TD>
  <TD class=TableDetail1 colSpan=2>&nbsp;1965-03-17</TD></TR>
  <TR class="">
  <TD class=TableDetail2 width="13%">
  <DIV align=right>现住地址</DIV></TD>
  <TD class=TableDetail1 width="26%" 
  colSpan=5>&nbsp;广东广州市海珠区&nbsp;永兴街58号之三201房</TD></TR>
  <TR class="">
  <TD class=TableDetail2 width="13%">
  <DIV align=right>籍贯</DIV></TD>
  <TD class=TableDetail1 width="26%" colSpan=5>&nbsp;&nbsp;</TD></TR>
  <TR class="">
  <TD class=TableDetail2 width="13%">
  <DIV align=right>体貌特征</DIV></TD>
  <TD class=TableDetail1 colSpan=5>&nbsp;</TD></TR>
  <TR class="">
  <TD class=TableDetail2 width="13%" height=21>
  <DIV align=right>特殊标记</DIV></TD>
  <TD class=TableDetail1 colSpan=5>&nbsp;</TD></TR>
  <TR class="">
  <TD class=TableDetail2 width="13%">
  <DIV align=right>案件编号</DIV></TD>
  <TD class=TableDetail1 colSpan=5>&nbsp;A1101054700002006020036</TD></TR>


  <TR class="">
  <TD class=TableDetail2 width="13%">
  <DIV align=right>案件类别</DIV></TD>
  <TD class=TableDetail1 width="26%" colSpan=5>&nbsp;诈骗案</TD></TR>
  <TR class="">
  <TD class=TableDetail2 width="13%">
  <DIV align=right>&nbsp;简要案情及附加信息</DIV></TD>
  <TD class=TableDetail1 
  colSpan=5>&nbsp;2005年9月嫌疑人虚构可以购买广州市海珠区以后可以升值为由,诈骗事主梁铁航人民币740000元。</TD></TR>
  
  <TD class=TableDetail1 colSpan=5>&nbsp;</TD></TR></TBODY></TABLE>
这是我要提取内容的部分网页,我现在是想得到第一个<Table>里的单元格数据,比如 姓名 梁伟志等,嵌套的那个Table另写表达式读出来, 请问这两个表达式该怎么写呢?请教

[解决办法]
不一定非的使用正则式不可。
你可以根据实际情况,使用string.index,当然,使用index的时候,你要把那些特征字段想好。
使用index更快,当然,分析起来是靠人的大脑了。
[解决办法]
要是我的话 我会用集合 把用到的添进去
集合的方法就很多了 想做什么都做了的!

我是小菜鸟! 说的不好清见谅, 希望能够帮到你!
[解决办法]
没看出来你的1楼跟顶楼贴的有什么联系,也没看明白你倒底要什么

把你的源字符串重新给一下,并给出你想要的结果

C# code
string test = ...........;Match m = Regex.Match(test, @"<img[^>]*?src=""(?<img>[^""]*)""[^>]*>(\s*<(?!img)[^>]*>\s*)+点击查看所有照片", RegexOptions.IgnoreCase);if (m.Success)    MessageBox.Show(m.Groups["img"].Value);
[解决办法]
不是不能写,是不想写,本来就比较麻烦,让楼主给出想要的结果,楼主又不给说明白了,写了又得改。。。

全取出来了,后续怎么处理,楼主自己看着办吧

C# code
string html = .....;string src = html.Replace("&nbsp;", "");src = Regex.Replace(src, @"^[\s\S]*?<table[\s\S]*?(?=<table)", "", RegexOptions.IgnoreCase);Match m = Regex.Match(src, @"<table[^>]*>((?><table[^>]*>(?<o>)|</table>(?<-o>)|((?!</?table)[\s\S]))*)(?(o)(?!))</table>", RegexOptions.IgnoreCase);if (m.Success){    string[] result = Regex.Split(m.Value, @"(?:\s*<[^>]*>\s*)+");    foreach (string s in result)    {        richTextBox1.Text += s + "\n";    }} 

热点排行