CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

[高分请教高效代码]提取表格中的数据到数据库

楼主ruide205(蓝色河流)2005-01-19 12:15:56 在 Web 开发 / ASP 提问

<tr   bgcolor="#F7EBE7">  
          <td   align="center"   bgcolor="#FF9999"   style="color:   #FFFFFF;   font-weight:   bold">英足杯</td>  
          <td   align="center">19日04:00</td>  
          <td   align="center"   style="color:   red;   font-weight:   bold">完</td>  
          <td   align="right">伯恩利</td>  
          <td   align="center"   style="font-family:   verdana"><a   href="javascript:showGoalList(135990,   '_cn')"><font   color="red"><b>1-0</b></font></a></td>  
          <td>利物浦   <img   src=images/redcard1.gif></td>  
          <td   align="center"   style="color:   red;   font-family:   verdana">0-0</td>  
      </tr>  
  xmlhttp得来的页面源码中含有很多这样结构的html,如何把需要的内容取出来存入数据库!其中一个<tr>对应数据库中的一个记录,一个<td>对应数据库中的字段。  
  问题点数:100、回复次数:13Top

1 楼xiwanghope(希望)回复于 2005-01-19 12:24:29 得分 0

用正则表达式分析过滤出你需要的数据,然后在编排你的格式  
   
  如果你不会正则表达式,可以去找个资料看看。。Top

2 楼hackate(兰花开香入梦境,独思佳人亦飘然!!)回复于 2005-01-19 12:40:52 得分 0

恩用正则表达式吧!Top

3 楼ruide205(蓝色河流)回复于 2005-01-19 13:02:50 得分 0

哪位大侠有时间给贴出代码,满分赠送!Top

4 楼moonvan(<修炼内功>)回复于 2005-01-19 14:03:11 得分 20

<%  
   
  '作者信息:  
  '昵称:小灰  
  'QQ:103895  
  'http://asp2004.net  
  'http://blog.csdn.net/iuhxq  
   
  hehe   =   Hello("http://mmsg.qq.com/cgi-bin/gddylist?Type=13&Sort=1&Page=3",   "<html>",   "</html>",   ".*(<td   width=""35%""   bgcolor=""#[\dABCDE]{6}"">(.*)</td>)[.\n]*",   "<font   style=""font-size:9pt;""   color=blue>$2</font><br>")  
  response.Write   hehe  
   
  Function   Hello(strUrl,   strStart,   strEnd,   patrn,   replStr)  
          Str   =   GetBody(strUrl)  
          Str   =   MyMid(Str,   strStart,   strEnd)  
          Str   =   ReplaceTest(patrn,   replStr,   Str)  
          Hello   =   Str  
  End   Function  
   
  Function   MyMid(Str,   strstart,   strend)  
          If   strstart   =   ""   Then  
                  i   =   0  
          Else  
                  i   =   InStr(Str,   strstart)  
          End   If  
          If   strend   =   ""   Then  
                  j   =   Len(Str)  
          Else  
                  j   =   InStr(i,   Str,   strend)  
          End   If  
          MyMid   =   Mid(Str,   i,   j   -   i   +   1)  
  End   Function  
   
  Function   ReplaceTest(patrn,   replStr,   str1)  
          Dim   regEx,   match,   matches  
          Set   regEx   =   New   RegExp  
          regEx.Pattern   =   patrn  
          regEx.IgnoreCase   =   True  
          regEx.Global   =   True  
          Set   matches   =   regEx.Execute(str1)  
          For   Each   match   in   matches  
                  ReplaceTest   =   ReplaceTest&regEx.Replace(Match.Value,   replStr)  
          Next  
  End   Function  
   
  Function   GetBody(Url)  
          Set   objXML   =   CreateObject("Microsoft.XMLHTTP")  
          With   objXML  
                  .Open   "Get",   Url,   False,   "",   ""  
                  .SEnd  
                  GetBody   =   .ResponseBody  
          End   With  
          GetBody   =   BytesToBstr(GetBody,   "GB2312")  
          Set   objXML   =   Nothing  
  End   Function  
   
  Function   BytesToBstr(strBody,   CodeBase)  
          Set   objStream   =   Server.CreateObject("Adodb.Stream")  
          With   objStream  
                  .Type   =   1  
                  .Mode   =   3  
                  .Open  
                  .Write   strBody  
                  .Position   =   0  
                  .Type   =   2  
                  .Charset   =   CodeBase  
                  BytesToBstr   =   .ReadText  
                  .Close  
          End   With  
          Set   objStream   =   Nothing  
  End   Function  
  %>  
  其他调用示例:  
  hehe   =   Hello("http://list.mp3.baidu.com/song/A.htm",   "<table   width=""90%""   border=""0""   align=""center""   cellpadding=""3""   cellspacing=""0""   bgcolor=""#f5f5f5""   >",   "<DIV   align=center>",   ".*(<td   width=""20%""><a   href="".*\.htm""   target=_blank>)(.*)(</a></td>)[.\n]*",   "<font   style=""font-size:9pt;""   color=blue>$2</font><br>")  
   
   
   
  Top

5 楼ruide205(蓝色河流)回复于 2005-01-19 20:48:45 得分 0

非常感谢上面兄弟的答复,不过那个好象是简单的替换,能不能针对我上面贴出的代码,贴出正则,小弟初次用正则,找个标准学习学习,先谢谢了~:)Top

6 楼ruide205(蓝色河流)回复于 2005-01-19 21:36:12 得分 0

顶下,明天早上来结贴Top

7 楼xiwanghope(希望)回复于 2005-01-19 22:04:09 得分 50

Dim   re  
  Set   re   =   New   RegExp  
  re.global   =   true  
  re.Pattern   =   "<tr\s*bgcolor="".{7}"">\s*"&_  
          "<td\s*align=""center""\s*bgcolor="".{7}""\s*style=""color:\s*.{7};\s*font-weight:\s*bold"">(.+?)</td>"&_  
          "<td\s*align=""center"">(.+?)</td>\s*"&_  
          "<td\s*align=""center""   style=""color:   red;   font-weight:   bold"">(.+?)</td>\s*"&_  
          "<td\s*align=""right"">(.+?)</td>\s*"&_  
          "<td\s*align=""center""\s*style=""font-family:\s*verdana""><a\s*href=""javascript:showGoalList\(\d+,\s*'_cn'\)""><font   color=""red""><b>(.+?)</b></font></a></td>\s*"&_  
          "<td>(.+?)(<img(.+?)>)*</td>\s*"&_  
          "<td\s*align=""center""\s*style=""color:\s*red;\s*font-family:\s*verdana"">(.+?)</td>\s*"&_  
      "</tr>\s*"  
   
  For   Each   oMatch   in   re.Execute(TemText)  
              response.write   oMatch.SubMathces(0)  
  response.write   oMatch.SubMathces(1)  
  response.write   oMatch.SubMathces(2)  
  response.write   oMatch.SubMathces(3)  
  response.write   oMatch.SubMathces(4)  
  response.write   oMatch.SubMathces(5)  
  response.write   oMatch.SubMathces(8)  
   
  Next  
   
  '这些是你所有td包含的值,0代表第一个,6,7匹配的是最后一个td里的<img>标签不用管他  
   
  按照你的希望存到一个地方就可以了。  
   
  分都给我好了,呵呵Top

8 楼S.F.(chinasf.cnblogs.com)回复于 2005-01-19 22:05:43 得分 30

为什么不用js把值遍历出来提交??把下面的代码保存到html文件中运行一下看看?  
  -----------------------------------  
  <table   id="testtable">  
  <tr   bgcolor="#F7EBE7">  
          <td   align="center"   bgcolor="#FF9999"   style="color:   #FFFFFF;   font-weight:   bold">英足杯</td>  
          <td   align="center">19日04:00</td>  
          <td   align="center"   style="color:   red;   font-weight:   bold">完</td>  
          <td   align="right">伯恩利</td>  
          <td   align="center"   style="font-family:   verdana"><a   href="javascript:showGoalList(135990,   '_cn')"><font   color="red"><b>1-0</b></font></a></td>  
          <td>利物浦   <img   src=images/redcard1.gif></td>  
          <td   align="center"   style="color:   red;   font-family:   verdana">0-0</td>  
  </tr>  
  <tr   bgcolor="#F7EBE7">  
          <td   align="center"   bgcolor="#FF9999"   style="color:   #FFFFFF;   font-weight:   bold">英足杯</td>  
          <td   align="center">19日04:00</td>  
          <td   align="center"   style="color:   red;   font-weight:   bold">完</td>  
          <td   align="right">伯恩利</td>  
          <td   align="center"   style="font-family:   verdana"><a   href="javascript:showGoalList(135990,   '_cn')"><font   color="red"><b>1-0</b></font></a></td>  
          <td>利物浦   <img   src=images/redcard1.gif></td>  
          <td   align="center"   style="color:   red;   font-family:   verdana">0-0</td>  
  </tr>  
  </table>  
   
  <script>  
  var   ttb =   document.getElementById("testtable");  
  var   td   =   "";  
  for(var   i=0;i<ttb.rows.length;i++){  
  for(var   j=0;j<ttb.rows(i).cells.length;j++){  
  td+=ttb.rows(i).cells(j).innerHTML+",";  
  }  
      td+="\r\n";  
  }  
  alert(td);    
  </script>Top

9 楼S.F.(chinasf.cnblogs.com)回复于 2005-01-19 22:07:44 得分 0

如果你只想取纯文本,那么修改innerHTML   为innerText即可,也就是这样的;  
   
  <script>  
  var   ttb =   document.getElementById("testtable");  
  var   td   =   "";  
  for(var   i=0;i<ttb.rows.length;i++){  
  for(var   j=0;j<ttb.rows(i).cells.length;j++){  
  td+=ttb.rows(i).cells(j).innerText+",";   //每个格子的内容都加入逗号  
  }  
      td+="\r\n";     //一个新行  
  }  
  alert(td);    
  </script>  
  Top

10 楼S.F.(chinasf.cnblogs.com)回复于 2005-01-19 22:22:44 得分 0

按你的格式,帮你修整了一下;  
   
  保存以下内容为1.htm  
   
  <table   id="testtable">  
  <tr   bgcolor="#F7EBE7">  
          <td   align="center"   bgcolor="#FF9999"   style="color:   #FFFFFF;   font-weight:   bold">英足杯</td>  
          <td   align="center">19日04:00</td>  
          <td   align="center"   style="color:   red;   font-weight:   bold">完</td>  
          <td   align="right">伯恩利</td>  
          <td   align="center"   style="font-family:   verdana"><a   href="javascript:showGoalList(135990,   '_cn')"><font   color="red"><b>1-0</b></font></a></td>  
          <td>利物浦   <img   src=images/redcard1.gif></td>  
          <td   align="center"   style="color:   red;   font-family:   verdana">0-0</td>  
  </tr>  
  <tr   bgcolor="#F7EBE7">  
          <td   align="center"   bgcolor="#FF9999"   style="color:   #FFFFFF;   font-weight:   bold">英足杯</td>  
          <td   align="center">19日04:00</td>  
          <td   align="center"   style="color:   red;   font-weight:   bold">完</td>  
          <td   align="right">伯恩利</td>  
          <td   align="center"   style="font-family:   verdana"><a   href="javascript:showGoalList(135990,   '_cn')"><font   color="red"><b>1-0</b></font></a></td>  
          <td>利物浦   <img   src=images/redcard1.gif></td>  
          <td   align="center"   style="color:   red;   font-family:   verdana">0-0</td>  
  </tr>  
  </table>  
   
  <script>  
  var   ttb =   document.getElementById("testtable");  
  var   td   =   "";  
  var   uriParam   =   "";     //url参数列表  
  for(var   i=0;i<ttb.rows.length;i++){  
  for(var   j=0;j<ttb.rows(i).cells.length;j++){  
  td+=ttb.rows(i).cells(j).innerText+",";  
  }  
      td=td.substr(0,td.length-1);     //去掉最后一个逗号  
      uriParam   +=   "td="   +   td   +   "&";   //组合QueryString   参  
      td   =   "";  
  }  
  uriParam=uriParam.substr(0,uriParam.length-1);   //去掉最后一个&连接符号  
  alert(uriParam);   //显示参数  
  window.open('2.asp?'+uriParam,'_self');   //送给1.asp   保存  
  </script>  
   
   
  保存以下内容为2.asp  
   
  <script   language=vbscript   runat=server>  
  dim   a,i  
  For   Each   objItem   In   Request.QueryString  
  Response.Write   objItem   &   "   =   "   &   Request.QueryString(objItem)   &   "<BR>"   '这里显示遍历出的参数内容  
  '分析参数内容,逗号分割  
  Response.write   "<hr><h1>开始分析内容</h1><hr>"  
  a   =   Split(Request.QueryString(objItem),",",-1,1)  
  if   isArray(a)   then  
  for   i=lbound(a)   to   ubound(a)  
  Response.write   "读取值:"   &   a(i)   &   "<hr>"   '输出值,这里获取的每个表格单元格内的值,你可以保存到库里去了  
  next  
  else  
  Response.Write   (A)   '这里是无法分割的内容  
  end   if  
  Next  
  </script>Top

11 楼ruide205(蓝色河流)回复于 2005-01-20 09:44:24 得分 0

多谢各位兄弟出手,研究下先~:)Top

12 楼ruide205(蓝色河流)回复于 2005-01-20 11:45:07 得分 0

希望兄的代码已看过,除漏了一空格匹配和SubMathces的笔误,其它调试通过!Top

13 楼ruide205(蓝色河流)回复于 2005-01-20 12:34:59 得分 0

S.F.(写游戏的猪)   兄的代码已看过,1.htm中  
  uriParam   +=   "td="   +   td   +   "&";   //组合QueryString   参  
  改为  
  uriParam   +=   "td"+i+"="   +   td   +   "&";   //组合QueryString   参  
  调试通过,在td后加了变量i,以区分get变量名  
   
   
  非常感谢兄弟们的热心帮助!另开一贴散分,以上留名的兄弟都可以去领分!Top

相关问题

  • 如何提取 表格里的值 急!!
  • 提取WEB表格中的超链接
  • 提取数据表格显示?
  • 关于表格代码的转换
  • ubb表格代码转化问题!
  • 寻求提取文件信息代码?
  • PHP从HTML中提取文字代码
  • 如何提取这段XML代码?
  • 如何书写高效的代码?
  • 怎么从word表格中提取数据?

关键词

  • 代码
  • 数据库
  • 内容
  • td
  • submathces
  • 19日04
  • strend
  • functionfunction
  • replacetest
  • strstart

得分解答快速导航

  • 帖主:ruide205
  • moonvan
  • xiwanghope
  • S.F.

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo