| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2449 人关注过本帖
标题:[求助]做个HTML解析器,20000个论坛币!!急!!
只看楼主 加入收藏
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

<tr>
<td style="text-align:left;width: 445px; height:20px">
<img src="imgpic/article_common.gif"/><a href= "http://www.zhtv.com/Article/ShowArticle.asp?ArticleID=36264" style="text-decoration:blink;" target="_blank" /><link href="newslist.css" rel="stylesheet" type="text/css" />金湾区工商联举行春茗酒会
</td>
<td style="text-align:right;width: 110px; color:Red;" >2007-03-23</td>
</tr>

<tr>
<td style="text-align:left;width: 445px; height:20px">
<img src="imgpic/article_common.gif"/><a href= "http://www.zhtv.com/Article/ShowArticle.asp?ArticleID=36263" style="text-decoration:blink;" target="_blank" /><link href="newslist.css" rel="stylesheet" type="text/css" />黄能建书画作品展今日开展
</td>
<td style="text-align:right;width: 110px; color:Red;" >2007-03-23</td>
</tr>
2007-03-24 00:14
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
你没发现日期吗?! <td style="text-align:right;width: 110px; color:Red;" >2007-03-23</td>

我暂时没发现出了没结束标记有点模糊之外有什么不同

结束的点只依赖于IE的判断而已,与<a href=..></a>有什么区别?
2007-03-24 00:16
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
以下是引用rainic在2007-3-23 22:26:25的发言:
看完了...都不知道要什么样的结果...其实是不是把<td></td>之类东西之间的内容取出来?

不光是取出来,取里面的话,用个简单正则把所有<[/]*[\S\s]+>去了就行了

2007-03-24 00:18
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
回复:(tianykun)[求助]做个HTML解析器,20000个论坛...
楼主那老师要的是类似这样的效果——




[此贴子已经被作者于2007-8-15 18:20:35编辑过]



rznCp0d1.gif (7.45 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2007-03-24 00:22
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

老实说,java有这样的直接函数调用,

如果java真tmd给开源了,你直接找到函数原型交给老师就行。

2007-03-24 00:24
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
对了,再告诉你一样你能看到你们老师想要的效果的方法,下载最新的firefox,

浏览一个页面,然后点DOM查看(忘了叫什么名字),反正ff就是有这样查看功能

另外,yms所说的dom来dom去,其实不过就是IE和ff(浏览器)在导航的时候顺便生成的75楼的树的运用

作用是应用css和js时寻变量的方便。

getElementById之类的就是迭代那棵树去找关于tag id的匹配

[此贴子已经被作者于2007-3-24 0:29:22编辑过]

2007-03-24 00:28
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
Dom Inspector

http://www.eray.cn/archives/2006/article.asp?id=165

这个就是那个ff里看dom树的插件
2007-03-24 00:46
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
假设我们只分析语<html></html>之间的内容

首先,我们把标签分成4类:

1.<LABEL>
2.</LABEL>
3.<LABEL/>
4.<LABEL>

其中1和2总是相互匹配:<td>...</td>、<h1>hello</h1>等等(就是用数据结构那判断括号是否匹配的那算法),如果不匹配则说明这个HTML文档有错误,无法构造成一棵树。然后是修复还是报错退出就看你了。一般是修复,再重新构造判断

3和4都可以被称之为单标签:<br>、<br/>等

另外,在解析之前,请把所有的换行符全部替换掉,这样可以方便的解析到
<a href=
"bbs.bc-cn.net">BC-CN</a>
这样夸行的标签

淘宝杜琨
2007-03-24 09:46
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

不用先替换掉,定义一个"\r\n\t "字符串,然后扫描到那个char的时候,就blankChar.IndexOf(c),是空白字符就跳过

string blankChar = "\r\n\t ";
char c = source[idx];

if(blankChar.IndexOf(c)!=-1)
{ idx++; }

2007-03-24 10:04
快速回复:[求助]做个HTML解析器,20000个论坛币!!急!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021799 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved