如何提取网页上表格中的数据,望大侠指点! 如题,最近工作中遇到这样的问题,就是要将网页上的表格原封不动的下载下来并存入数据库,包括表格中的数据,望各位大侠指点一二。如何在数据库中建立表格、写入数据这个没问题,关键是这网页上的表格和数据该如何提取,难煞我了,无从入手!望高手赐教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先把页面读取下来,然后用DOM来解析 为了方便大家指点,小弟写了一个网页做例子,代码如下(把第二个表格提取出来即可):<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> </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> </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> 自己写麻烦,容易错。找找开源的代码,比如html parser。 我和楼上的想法差不多.1.先通过URL.openStream()把网页上的数据读取到DOM中.2.利用网上一些现成的规范HTML的代码,把HTML变成标准的XML格式.3.可以利用JDOM或DOM4J中的XPath进行查找.4.数据库中可以建一个保存网页的Table.字段如:ID,URL,NAME,TABLE .这里的TABLE保存的就是Table的HTML代码. 先把页面读取下来,然后用DOM来解析你只要分析一下网页格式,你要的部分有什么特点,分析出来直接拿过来就行 页面已经读取下来了,不知道哪里有DOM的教程例子可以下载学习呢? 需求不明确,你要提取的 HTML 格式都是这种样子的还是什么?你说了半了,我也没看到你想从这个 TABLE 中得到什么东西。 用正则表达式来读咯,找出<table...</table>,取你想要的东西咯 我和楼上的想法差不多. 1.先通过URL.openStream()把网页上的数据读取到DOM中. 2.利用网上一些现成的规范HTML的代码,把HTML变成标准的XML格式. 3.可以利用JDOM或DOM4J中的XPath进行查找. 4.数据库中可以建一个保存网页的Table.字段如:ID,URL,NAME,TABLE .这里的TABLE保存的就是Table的HTML代码. String 的问题 请问如何实现限制软件客户端的数量? 配置tomcat中server.xm后自动关闭 Struct问题 经过一年半的学习积累,今天终于升星了,散分庆祝!!!! Ftp url 转 Http url ????? 【求助】swing编程中如何创建一个有下拉选择栏的对话框 关于Integer类和Map的疑问 关于Junit配置的问题! 事件响应的问题? 方法声明时,要声明这个方法抛出异常,有什么好处?高手进入! 如何让JDialog置顶(JDK1.4)?
<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> </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> </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>
1.先通过URL.openStream()把网页上的数据读取到DOM中.
2.利用网上一些现成的规范HTML的代码,把HTML变成标准的XML格式.
3.可以利用JDOM或DOM4J中的XPath进行查找.
4.数据库中可以建一个保存网页的Table.字段如:ID,URL,NAME,TABLE .这里的TABLE保存的就是Table的HTML代码.
你只要分析一下网页格式,你要的部分有什么特点,分析出来直接拿过来就行
1.先通过URL.openStream()把网页上的数据读取到DOM中.
2.利用网上一些现成的规范HTML的代码,把HTML变成标准的XML格式.
3.可以利用JDOM或DOM4J中的XPath进行查找.
4.数据库中可以建一个保存网页的Table.字段如:ID,URL,NAME,TABLE .这里的TABLE保存的就是Table的HTML代码.