欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.net 解决spider多次和重复抓取的方案

程序员文章站 2024-02-15 20:38:53
原因: 早期由于搜索引擎蜘蛛的不完善,蜘蛛在爬行动态的url的时候很容易由于网站程序的不合理等原因造成蜘蛛迷路死循环。 所以蜘蛛为了避免之前现象就不读取动态的url,特...

原因:

早期由于搜索引擎蜘蛛的不完善,蜘蛛在爬行动态的url的时候很容易由于网站程序的不合理等原因造成蜘蛛迷路死循环。

所以蜘蛛为了避免之前现象就不读取动态的url,特别是带?的url

解决方案:

1):配置路由

复制代码 代码如下:

routes.maproute("rentofficelist",
               "rentofficelist/{aredid}-{priceid}-{acreageid}-{sortid}-{sortnum}.html",
               new { controller = "home", action = "rentofficelist" },
               new[] { "mobile.controllers" });

第一个参数是路由名称
第二个参数是路由的url模式,参数之间用{}-{}方式分隔
第三个参数是一个包含默认路由的对象
第四个参数是应用程序的一组命名空间

2):设置连接

<a href="@url.action("rentofficelist",new routevaluedictionary { { "aredid",0},{"priceid",0},{"acreageid",0},{"sortid",0},{"sortnum",0}})">默认排序</a>

对照上面的url模式,依次写入参数赋值
3):获取参数

复制代码 代码如下:

int areaid = getrouteint("aredid");//获取参数
/// <summary>
/// 获得路由中的值
/// </summary>
/// <param name="key">键</param>
/// <param name="defaultvalue">默认值</param>
/// <returns></returns>
protected int getrouteint(string key, int defaultvalue)
{
return convert.toint32(routedata.values[key], defaultvalue);
}
/// <summary>
/// 获得路由中的值
/// </summary>
/// <param name="key">键</param>
/// <returns></returns>
protected int getrouteint(string key)
{
return getrouteint(key, 0);
}

根据上面3个步骤操作,显示的url地址为:


这样就可以避免静态页面上使用动态参数,显示的页面都为静态页面