如题,最近工作中遇到这样的问题,就是要将网页上的表格原封不动的下载下来并存入数据库,包括表格中的数据,望各位大侠指点一二。如何在数据库中建立表格、写入数据这个没问题,关键是这网页上的表格和数据该如何提取,难煞我了,无从入手!望高手赐教!

解决方案 »

  1.   

    先把页面读取下来,然后用DOM来解析
      

  2.   

    为了方便大家指点,小弟写了一个网页做例子,代码如下(把第二个表格提取出来即可):
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>从html代码中提取表格</title>
    </head>
    <body>
    <table width="800" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <TD height=28 align=center>表格一</TD>
      </tr>          
    </table>
    <table width="800" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <TD height=28 align=center>表格二</TD>
      </tr>
      <tr>
        <td align="center"><table width="100%" border="0" cellpadding="0" cellspacing="0">
            <tr> <td width='50%' valign=top><TABLE width=400 border=0 align=center cellPadding=3 cellSpacing=1 bgcolor=#E6CF9F>
    <tr align=middle> 
    <td height=28 colspan=10><b>左</b></font></a></td>
    </tr>
    <tr align=middle> 
    <td height=20>&nbsp;</td>
    <td>东</td>
    <td>南</td>
    <td>西</td>
    <td>北</td>
    <td>中</td>
    <td>东南</td>
    <td>西南</td>
    <td>西北</td>
    <td>东北</td>
    </tr>
    <tr align=middle bgcolor=#FFECEC> 
    <td height=20 bgcolor=#FEFAF8>春</td>
    <td bgcolor=#FEFAF8>1</td>
    <td bgcolor=#FEFAF8>3</td>
    <td bgcolor=#FEFAF8>6</td>
    <td bgcolor=#FEFAF8>5</td>
    <td bgcolor=#FEFAF8>2</td>
    <td bgcolor=#FEFAF8>9</td>
    <td bgcolor=#FEFAF8>4</td>
    <td bgcolor=#FEFAF8>8</td>
    <td bgcolor=#FEFAF8>7</td>
    </tr>
    <tr align=middle bgcolor=#FFECEC>
    <td bgcolor=#FEFAF8 height=20>夏</td>
    <td bgcolor=#FEFAF8>11</td>
    <td bgcolor=#FEFAF8>15</td>
    <td bgcolor=#FEFAF8>18</td>
    <td bgcolor=#FEFAF8>15</td>
    <td bgcolor=#FEFAF8>16</td>
    <td bgcolor=#FEFAF8>12</td>
    <td bgcolor=#FEFAF8>14</td>
    <td bgcolor=#FEFAF8>13</td>
    <td bgcolor=#FEFAF8>17</td>
    </tr>
    <tr align=middle bgcolor=#FFECEC>
    <td height=20 bgcolor=#FEFAF8>秋</td>
    <td bgcolor=#FEFAF8>29</td>
    <td bgcolor=#FEFAF8>22</td>
    <td bgcolor=#FEFAF8>23</td>
    <td bgcolor=#FEFAF8>24</td>
    <td bgcolor=#FEFAF8>26</td>
    <td bgcolor=#FEFAF8>29</td>
    <td bgcolor=#FEFAF8>23</td>
    <td bgcolor=#FEFAF8>28</td>
    <td bgcolor=#FEFAF8>27</td>
    </tr>
    <tr align=middle bgcolor=#FFECEC>
    <td height=20 bgcolor=#FEFAF8>冬</td>
    <td bgcolor=#FEFAF8>36</td>
    <td bgcolor=#FEFAF8>31</td>
    <td bgcolor=#FEFAF8>32</td>
    <td bgcolor=#FEFAF8>33</td>
    <td bgcolor=#FEFAF8>37</td>
    <td bgcolor=#FEFAF8>33</td>
    <td bgcolor=#FEFAF8>36</td>
    <td bgcolor=#FEFAF8>35</td>
    <td bgcolor=#FEFAF8>39</td>
    </tr>
    </table>
    </td>
    <td width='50%' valign=top><TABLE width=400 border=0 align=center cellPadding=3 cellSpacing=1 bgcolor=#B0D2E3>
    <tr align=middle> 
    <td height=28 colspan=10><b>右</b></font></a></td>
    </tr>
    <tr align=middle> 
    <td height=20>&nbsp;</td>
    <td>东</td>
    <td>南</td>
    <td>西</td>
    <td>北</td>
    <td>中</td>
    <td>东南</td>
    <td>西南</td>
    <td>西北</td>
    <td>东北</td>
    </tr>
    <tr align=center bgcolor=#CCCCFF> 
    <td height=20 bgcolor=#F2F9FD>春</td>
    <td bgcolor=#F2F9FD>3</td>
    <td bgcolor=#F2F9FD>5</td>
    <td bgcolor=#F2F9FD>3</td>
    <td bgcolor=#F2F9FD>9</td>
    <td bgcolor=#F2F9FD>4</td>
    <td bgcolor=#F2F9FD>4</td>
    <td bgcolor=#F2F9FD>5</td>
    <td bgcolor=#F2F9FD>8</td>
    <td bgcolor=#F2F9FD>7</td>
    </tr>
    <tr align=center bgcolor=#CCCCFF>
    <td height=20 bgcolor=#F2F9FD>夏</td>
    <td bgcolor=#F2F9FD>19</td>
    <td bgcolor=#F2F9FD>18</td>
    <td bgcolor=#F2F9FD>17</td>
    <td bgcolor=#F2F9FD>14</td>
    <td bgcolor=#F2F9FD>16</td>
    <td bgcolor=#F2F9FD>19</td>
    <td bgcolor=#F2F9FD>17</td>
    <td bgcolor=#F2F9FD>11</td>
    <td bgcolor=#F2F9FD>18</td>
    </tr>
    <tr align=center bgcolor=#CCCCFF>
    <td height=20 bgcolor=#F2F9FD>秋</td>
    <td bgcolor=#F2F9FD>28</td>
    <td bgcolor=#F2F9FD>27</td>
    <td bgcolor=#F2F9FD>26</td>
    <td bgcolor=#F2F9FD>25</td>
    <td bgcolor=#F2F9FD>23</td>
    <td bgcolor=#F2F9FD>25</td>
    <td bgcolor=#F2F9FD>22</td>
    <td bgcolor=#F2F9FD>27</td>
    <td bgcolor=#F2F9FD>27</td>
    </tr>
    <tr align=center bgcolor=#CCCCFF>
    <td height=20 bgcolor=#F2F9FD>冬</td>    
    <td bgcolor=#F2F9FD>36</td>
    <td bgcolor=#F2F9FD>32</td>
    <td bgcolor=#F2F9FD>33</td>
    <td bgcolor=#F2F9FD>31</td>
    <td bgcolor=#F2F9FD>37</td>
    <td bgcolor=#F2F9FD>36</td>
    <td bgcolor=#F2F9FD>31</td>
    <td  bgcolor=#F2F9FD>39</td>
    <td  bgcolor=#F2F9FD>35</td>
    </tr>
    </table>
    </td> </tr>
          </table></td>
      </tr>
    </table>
    <table width="800" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <TD height=28 align=center>表格三</TD>
      </tr>          
    </table>
    </body>
    </html>
      

  3.   

    自己写麻烦,容易错。找找开源的代码,比如html parser。
      

  4.   

    我和楼上的想法差不多.
    1.先通过URL.openStream()把网页上的数据读取到DOM中.
    2.利用网上一些现成的规范HTML的代码,把HTML变成标准的XML格式.
    3.可以利用JDOM或DOM4J中的XPath进行查找.
    4.数据库中可以建一个保存网页的Table.字段如:ID,URL,NAME,TABLE .这里的TABLE保存的就是Table的HTML代码.
      

  5.   

    先把页面读取下来,然后用DOM来解析
    你只要分析一下网页格式,你要的部分有什么特点,分析出来直接拿过来就行
      

  6.   

    页面已经读取下来了,不知道哪里有DOM的教程例子可以下载学习呢?
      

  7.   

    需求不明确,你要提取的 HTML 格式都是这种样子的还是什么?你说了半了,我也没看到你想从这个 TABLE 中得到什么东西。
      

  8.   

    用正则表达式来读咯,找出<table...</table>,取你想要的东西咯
      

  9.   

    我和楼上的想法差不多. 
    1.先通过URL.openStream()把网页上的数据读取到DOM中. 
    2.利用网上一些现成的规范HTML的代码,把HTML变成标准的XML格式. 
    3.可以利用JDOM或DOM4J中的XPath进行查找. 
    4.数据库中可以建一个保存网页的Table.字段如:ID,URL,NAME,TABLE .这里的TABLE保存的就是Table的HTML代码.