研究了几天 我总结了一下几点:
1. 蜘蛛只能抓取a标签中的href(<a href="Default.aspx">测试</a>)
最好后面不要带参数(<a href="Default.aspx?id=1">测试</a>) 如果带上参数 蜘蛛不会有限考虑的
URL重写 详解
2. 蜘蛛不会执行JavaScript 换句话说 如果在a标签中使用了onclick 蜘蛛是不会抓到的
3. 蜘蛛只能抓到get请求的页面 不会抓到post请求的页面
4. 我们希望网页的前台页面全部被蜘蛛抓到 但是不希望后台页面被蜘蛛抓到 蜘蛛可没有那么只能 知道你的网
这里就需要创建一个名为 “robots.txt” (注意robots.txt是一个协议 不是命令 一般最好要遵守的)
下面说这篇文章的重点
在第2点中 我说道蜘蛛不会执行JavaScript 那么是不是就说只要使用了AJAX效果就不会被蜘蛛抓到呢? 答案是否定的 浅谈Ajax
我们先来看一下 一个使用AJAX的demo
<head runat="server">
<title>测试</title>
<script src="js/jquery-1.7.1.js" type="text/javascript"></script>
<script type="text/javascript">
function fun(id) {
$.post("Ajax.ashx",{ "id": id },function(data) {
$("#p1").text(data);
})
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<p id="p1">
</p>
<a href="javascript:void(0)" onclick="fun(1);return false;">1</a>
<a href="javascript:void(0)" onclick="fun(2);return false;">2</a>
<a href="javascript:void(0)" onclick="fun(3);return false;">3</a>
</div>
</form>
</body>
在上面的a标签中 href属性是"javascript:void(0)" 蜘蛛是不会执行js脚本的 所以这三个页面 是一个都抓不到的
有这样一个解决方案 既实现了AJAX 又能被蜘蛛所抓到 来看下面的demo
<head runat="server">
<title>测试</title>
<script src="js/jquery-1.7.1.js" type="text/javascript"></script>
<script type="text/javascript">
function fun(id) {
$.post("Ajax.ashx",function(data) {
$("#p1").text(data);
})
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<p id="p1">
</p>
<a href="Ajax.ashx?id=1" onclick="fun(1);return false;">1</a>
<a href="Ajax.ashx?id=2" onclick="fun(2);return false;">2</a>
<a href="Ajax.ashx?id=3" onclick="fun(3);return false;">3</a>
</div>
</form>
</body>
来说明一下
1. 在a标签的href属性中 我改成了 Ajax.ashx?id=1 有人问了 不是带有参数也不利于SEO么 应该重写URL的 没错 但是有一点 重写URL只适用于apsx页面 应为只有aspx页面具有页面生命周期 适用ajax的时候 最好适用一般处理程序 也就是ashx页面 ashx没有页面生命周期 也就不能重写URL了
2. 在onclick属性后面添加了一个return false; 这样做的目的是告诉他 不要执行href属性里面的内容了 其实href里面的属性 就没有执行 href里面的属性就是为了让蜘蛛看 让蜘蛛能抓到页面
以上是我个人的理解 有不对的地方 还请您批评 万分感谢!!!! 原文链接:https://www.f2er.com/ajax/166800.html