一个稍微有点难度的问题:如何做HTML语法分析?

popcorn 2003-07-24 09:58:40
比如我要提炼出一个HTML文件中有多少个图片,多少个TABLE,多少个JS函数,多少个超级连接等等,然后还可以将超级连接提炼出来保存到数据库中去。象FP和DW的可视化编辑器都是如何提炼语法的?我试了很多正则表达式都很难达到理想效果,不知道哪里有好的算法去提取HTML中的标记?

提供思路、算法或者参考资料都给分。
...全文
108 14 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
杨东明 2003-07-26
  • 打赏
  • 举报
回复
【利用 Microsoft 的 HTML 分析器来获得 Web 站点的数据】

http://www.microsoft.com/china/msdn/workshop/scrape.asp#top

看看就知道怎么做了,我想这样做才是最好的解决方案

大家一起学习....
dotnba 2003-07-26
  • 打赏
  • 举报
回复
听课
ArLi2003 2003-07-26
  • 打赏
  • 举报
回复
那用正则匹配就是了
popcorn 2003-07-26
  • 打赏
  • 举报
回复
楼上的理解错了,我要做的是字符串分析,不是用JS显示给客户看。
我想用正则表达式应该是最简单的了,思归给的参考方法也很不错。
ArLi2003 2003-07-26
  • 打赏
  • 举报
回复
var images = document.all.tags("IMG");
for (var iImgCounter = 0; iImgCounter < images.length; iImgCounter++) {
var imgTmp = images(iImgCounter);
var urlTmp = imgTmp.href;

.....
panyee 2003-07-25
  • 打赏
  • 举报
回复
其实每个生成的html页面都可以把它们提炼成一个xml文件, 你就寻找此文件中是否包含了<A>,
<TABLE> 这种标签的字符串, 取得它们的内容,

起始位置就是"<A...", 结束位置就是再找到一个"/A>"

然后再分析<a 里面的各个属性的名称和值,,

做起来也很有意思

可惜偶有其它东东要忙
erigido 2003-07-25
  • 打赏
  • 举报
回复
学习
xixigongzhu 2003-07-25
  • 打赏
  • 举报
回复
知道csc干嘛的把,它有个过程是词法分析器分析词法。
实际上html也是门语言,它也有词法分析器,如果不闲麻烦,可以做个简单点的词法分析器,来实现你的这些功能,这也不是很难的,只是有点麻烦。

正则表达式的话只要你的表达式精确,应该是没有问题的。
liduke 2003-07-25
  • 打赏
  • 举报
回复
正则表达式中不是有分组和命名捕获字符串有匹配这项吗?我觉得应该可行。
如从 URL 提取协议和端口号
String Extension(String url)

{

Regex r = new Regex(@"^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/",

RegexOptions.Compiled);

return r.Match(url).Result("${proto}${port}");

}

rqxiang 2003-07-25
  • 打赏
  • 举报
回复
gz
popcorn 2003-07-25
  • 打赏
  • 举报
回复
如果碰到都是规则的HTML代码还好,要是碰到写的不很规范的(但是你不能说有错),分析起来难度就大多了.不知道大家有什么好的建议?
saucer 2003-07-24
  • 打赏
  • 举报
回复
or get

GotDotNet User Sample: SgmlReader 1.1
http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=B90FDDCE-E60D-43F8-A5C4-C3BD760564BC
saucer 2003-07-24
  • 打赏
  • 举报
回复
A Yacc grammar for HTML
http://www.di.unito.it/mail_archive/YACCHTML/0000.html

An Elementary HTML Parser
http://www.codeproject.com/csharp/HTMLParser.asp
popcorn 2003-07-24
  • 打赏
  • 举报
回复
JAVA中有类帮助实现,这里有篇JAVA的文章:
http://www.chinajavaworld.net/doc/lang/46.html

C#中又该如何做呢?
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2003-07-24 09:58
社区公告

让您成为最强悍的C#开发者