利用这个原理可以遍历一个网站的所有超链接,并获得该链接HTML文档的关键字,然后再遍历该文档以获得该文档的超链接, 如此递归下去,可以做成个简单的搜索引擎。。不过不知道效率如何。
演示地址:http://scboy.ik8.com/GetAllLinks.htm
<html>
<head>
<title>
getAllLink
</title>
<script language="javascript">
var elementName = ""; // 全局变量,保存超链接地址,用完要清空
function getAllLink( node )
{
var total = 0; // 计算总共有多少超链接
// nodeType 判断该节点是否为元素节点,1表示为元素节点
// tagName 判断该节点是否是超链接
if ( node.nodeType == 1 && node.tagName == "A" )
{
total += 1; // 超链接总数加1
// 保存超链接的地址
// node.getAttribute("href")获得该属性的值
elementName = elementName + node.getAttribute("href") + "\r\n";
}
// 获得node的全部子节点
var children = node.childNodes;
for ( var i = 0; i < children.length; i++ )
{
// 在每个子节点上进行递归操作,以遍历HTML文档所有节点
total += getAllLink( children[i] );
}
return total; // 返回该节点超链接个数
}
</script>
</head>
<body>
<a href="javascript:void(0)" onClick="alert('超链接总数:' + getAllLink(document) +
'\r\n 全部超链接地址如下: \r\n' + elementName); elementName='';"> 开始统计超链接个数 </a>
<br><br><hr>
<a href="http://www.yaoyuan.com"> yaoyuan </a> <br>
<a href="http://www.163.com"> 163 </a> <br>
<a href="http://fengfei.programfan.com"> 风飞BLOG </a> <br>
</body>
</html>
当然也可以通过getElementByTagName来获得指定标记的节点.. 这样就不需要递归,可以简单很多。。
评论