计算页面字数,求助!!!

udbjatpe1987 2009-11-04 06:34:16
做一个页面,可以输入一个网页的地址,然后当点击一个button的时候,会自动计
算该页面的word count(字数)。同时,这个页面所链接到的其他页面,也需要计
算他的字数。
...全文
822 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen_xiangguo 2009-11-06
  • 打赏
  • 举报
回复
这是截图
chen_xiangguo 2009-11-06
  • 打赏
  • 举报
回复
楼主的想法不错,很有创意。
要明白,因为js不可以跨域访问,所以不利用服务器技术是不可以(使用iframe只可以)
以下是我的实现效果:

我的思想是:由于js不能跨域访问,我用服务端语言访问,然后传递到页面。
我使用的服务端语言是java,即jsp,运用的ajax框架是dwr,当点击按钮时,java 代码访问相应的url,得到html,然后返回页面。
index.html:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>获得页面html</title>
<script src="js/jquery-1.3.2.min.js"></script>
<script type='text/javascript' src='/zf/dwr/interface/HtmlAction.js'></script>
<script type='text/javascript' src='/zf/dwr/engine.js'></script>
<script type='text/javascript' src='/zf/dwr/util.js'></script>
</head>
<body>
<center>
输入网址(网址必须以http开头):
<input type="text" id="webSite">
<input type="button" id="getHtml" value="获取html">
</center>
<div id="msg">
</div>
<br>
<center>
<textarea style="width:100%; height:600px;"></textarea>
</center>
</body>
<script language="javascript">
$(function()
{  
$('#getHtml').click(sub);
});
function sub()
{
if($('#webSite').val()=="")
return;
HtmlAction.getHtmlByUrl($('#webSite').val(),doShow);
}
function doShow(result)
{
$('textarea').val(result);

}
</script>
</html>

服务器方法(简单的java网络代码):

public String getHtmlByUrl(String url) {
URL net = null;
try {
net = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
}
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(net.openStream()));
} catch (IOException e) {
e.printStackTrace();
return null;
}
StringBuffer sb = new StringBuffer();
String inputLine = null;
try {
while ((inputLine = reader.readLine()) != null) {
sb.append(inputLine + "\n");
}
} catch (IOException e) {
e.printStackTrace();
return null;
}
return sb.toString();
}

另外,你还说取出它的所有链接,然后求它们的页面字数,原理这是一样的。但是求链接有问题。
我可以取出所有的href标签(使用正则表达式,网上一大堆,正则是:/<A[^>]*?HREF\s*=\s*["']?([^'"" >]+?)(?=[ '""]?>)/gi),然后进行一点字符串处理取得链接,这个也可以实现,但是复杂的是:对取出来的路径我要进行相对路径和绝对路径的判断,相对路径我要加上地址。。。。感觉太复杂,就没写那个。
你要是需要那个代码,我可以写,但是原理就是这样。
要写的话qq我(qq:1228902349)
wifewifewife 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuxiang2006 的回复:]
你说的更像是一个爬虫的功能,如果这一功能想要用JS实现的基本不太可能,最后前台调用爬虫程序,由爬虫程序去完成搜索与计算功能。
[/Quote]
是的,非常象爬虫。。
cat2781 2009-11-05
  • 打赏
  • 举报
回复
二楼有理
但不知道如何找出所有元素
gkw521 2009-11-05
  • 打赏
  • 举报
回复
帮顶,学习
浴火_凤凰 2009-11-05
  • 打赏
  • 举报
回复
实现不了!
首先如果一个页面链接了一个不同域的页面
第二个页面的内容估计JS就获取不到!
如果能实现,那么搜索引擎就很容易了
内容都能获取到那么查找一个字符还不容易吗?
xiaofan_sap 2009-11-05
  • 打赏
  • 举报
回复
统计本页面字数的例子:
<html>
<head>
<title></title>
</head>
<body>
<table>
<tr><td>123456789</td></tr>
<tr><td>123456789</td></tr>
<tr><td>123456789</td></tr>
<tr><td>123456789</td></tr>
<tr><td>123456789</td></tr>
<tr><td>123456789</td></tr>
</table>
</div>


<script language="javascript" type="text/javascript">

function cleanWhitespace(element)
{
element=element||document;
var cur=element.firstChild;
while(cur!=null)
{
if(cur.nodeType==3&&!/\S/.test(cur.nodeValue))
{
element.removeChild(cur);

}else if(cur.nodeType==1)
{
cleanWhitespace(cur);
}
cur=cur.nextSibling;
}
}
alert("ok");
cleanWhitespace();

var num=0;
var testdiv = document.body;
(function(node) {
for (var i=0; i <node.childNodes.length; i++) {
var c = node.childNodes[i];
if (c.nodeType == 3)
{
num+=parseInt(c.nodeValue.length);
alert(num);
}
else
arguments.callee(c);
}
})( testdiv );
</script>

</body>
</html>
xiaofan_sap 2009-11-05
  • 打赏
  • 举报
回复

<script language="javascript">
var num=0;
var testdiv = document.body;
(function(node) {
for (var i=0; i <node.childNodes.length; i++) {
var c = node.childNodes[i];
if (c.nodeType == 3)
{
num+=parseInt(c.nodeValue.length);
alert(num);
}
else
arguments.callee(c);
}
})( testdiv );
</script>
Dogfish 2009-11-05
  • 打赏
  • 举报
回复
找找google。 "javascript spider"
xiaotang_hb 2009-11-04
  • 打赏
  • 举报
回复
学习··顶下咯··
chen_xiangguo 2009-11-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fandelei1982 的回复:]
用ajax,对输入的url进行提交,获取返回的文本,就能获取字数,然后对文本进行分析,取出其中的连接的url,然后对其连接进行同样的操作,获取其连接的页面的文本及其字数.
[/Quote]
我使用的jquery的ajax,可是网址是我自己的网址还行,一换别的网址,就显示错误(”没有权限“),这是怎么回事?
friendly_ 2009-11-04
  • 打赏
  • 举报
回复
用ajax,对输入的url进行提交,获取返回的文本,就能获取字数,然后对文本进行分析,取出其中的连接的url,然后对其连接进行同样的操作,获取其连接的页面的文本及其字数.
my_nature_2 2009-11-04
  • 打赏
  • 举报
回复
二楼有理
但不知道如何找出所有元素
wuxiang2006 2009-11-04
  • 打赏
  • 举报
回复
你说的更像是一个爬虫的功能,如果这一功能想要用JS实现的基本不太可能,最后前台调用爬虫程序,由爬虫程序去完成搜索与计算功能。
udbjatpe1987 2009-11-04
  • 打赏
  • 举报
回复
有没有哪位高手帮我写下,,求助啊。。
xiaofan_sap 2009-11-04
  • 打赏
  • 举报
回复
提供个思路 :html中 节点类型经常用的有三种
元素 nodetype=1 匹配《li》《a》 body等节点
文本 nodetype=3
文档 就是hmtl 你可以便利一个页面,找出节点类型为3的节点 ,获得他的值,有length得到其长度。

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧