htmlunit抓取动态网页(如何实现静态页面名字和动态页面的映射(图))

优采云 发布时间: 2021-09-23 18:07

  htmlunit抓取动态网页(如何实现静态页面名字和动态页面的映射(图))

  动态生成的网页在网站真实*敏*感*词*网页的构建中不可或缺。然而,动态页面的名称(即其URL)通常缺乏明确的含义。例如,名为product的页面。ASP?Id=4不如名为/应用程序/洗碗机/Model3809.Htm页面很容易记住。介绍了如何实现静态页面名与动态页面名的映射

  概述

  除了静态页面名称具有更清晰含义的优势外,静态页面名称的另一个优势是搜索引擎可以为这些页面编制索引。大多数搜索引擎,如Alta Vista和Yahoo,都不会检索URL中带有问号的页面,因为它们担心进入无尽的链接迷宫。将动态页面名称转换为静态页面名称后,搜索引擎将对这些页面进行索引和分类,以便网站带来更多流量

  要使用本文介绍的方法将动态名称转换为静态名称,必须使用Windows 2000和IIS5.0.IIS5.0的两个改进使我们能够实现这种转换:使用服务器的“自定义错误消息”功能。传输和使用服务器的能力。在ASP页面中传输。虽然IIS4.0它还支持用户定义的错误消息,但使用响应。重定向,这是无用的。因此,此方法需要IIS5.0.Response.redirect是无用的,因为搜索引擎不会跟随重定向

  使用本文描述的方法,网站developers首先链接实际上不存在静态URL的页面。然后设置IIS服务器并告诉它使用指定的ASP页(404.ASP)来处理@ASP上的所有404错误网站.在这个404.在ASP页面中,原创URL被转换为正式的动态URL,由服务器执行。传输目标页面并将其返回到用户浏览器

  假设以下URL:

  当网站被域名替换时,URL将返回404错误。我们需要做的第一件事是使用专用的.ASP页面来处理所有这些404错误。这可以使用IIS5.0的“自定义错误消息”功能。设置此功能的过程如下:

  ● 在MMC中打开IIS服务器管理器

  ● 右击Web网站Node并选择属性

  ● 单击“自定义错误消息”页面

  ● 向下滚动直到找到404错误

  ● 双击404错误以打开“错误映射属性”对话框

  ● 将消息类型更改为URL

  ● 在URL框中输入“/”404.asp”

  ● 单击“确定”关闭窗口

  现在404错误已经被删除404.ASP已处理。当IIS调用404.ASP page,它将提供导致404错误的URL,这对我们非常有用

  错误处理页

  接下来,我们创建一个用于处理错误的404.ASP page。要做的第一件事是获取导致404错误的页面名称。以下代码行从查询字符串中提取此页面的名称:

  '获取页面名称

  strQ=Request.ServerVariables(“查询字符串”)

  %&gt

  那么strq中什么是重要的呢?在上面的示例中,它应该是这样的:/applications/dishchiners/Kenmore/Model3809.htm。我们真正需要的是型号3809(产品型号),因为这是产品数据库中唯一的密钥。以下代码行根据产品型号查找产品ID(编号):

  '计算产品模型

  nIndex=InStrRev(strQ,“/”)

  如果(nIndex>0)Then

  strModelNumber=右侧(strQ,Len(strQ)-nIndex)

  strQ=左(strQ,nIndex-1)

  如果结束

  '从产品型号中删除.HTM后缀

  如果((Mid(strPageName),Len(strPageName),1)=“m”)和_

  (Mid(strPageName),Len(strPageName)_

  (Mid(strPageName),Len(strPageName)_

  (Mid(strPageName,(strPageName)-3,1)=“.”)然后

  strModelNumber=左(strPageName,Len(strModelNumber)-4)

  如果结束

  '从产品数据库中查找产品编号

  strSQL=“从产品中选择产品\u Id”_

  &“其中Product_Model=”&strModelNumber&“”

  设置oRS=oConn.Execute(strSQL)

  如果(不是oRS.EOF),则

  lProductId=oRS(“产品Id”)

  如果结束

  %&gt

  现在我们有了产品编号,在转换到正确的ASP页面之前必须保存它。我们无法通过server.transfer(这是IIS的限制)在查询字符串中传递产品编号,因此必须通过会话对象传递它

  会话(“Id”)=lProductId

  Server.Transfer(“/product.asp”)

  %&gt

  执行此页面时,浏览器地址栏中的内容如下:

  由于使用了server.transfer,浏览器地址栏中的URL不会更改。同样,浏览器不需要再次与服务器交互,这与response.redirect不同

  此外,请注意URL中的目录根本不存在。事实上,除服务器名称外,URL的其余部分根本不起作用。例如,以下URL将返回到同一页面

  那么为什么要添加这么多目录呢?这些目录将提高搜索引擎对网站的评价。一些搜索引擎认为URL中的单词在搜索关键词时更重要,所以目录名非常重要

  调用不存在的页面

  我们已经讨论了将不存在的URL转换为有效的动态URL的技术。然而,为了使搜索引擎能够索引这些页面,我们还需要链接这些不存在的URL。换句话说,只有当我们链接Model3809.Htm页面,然后搜索引擎才能找到它

  在过去,当链接此页面时,我们只需要按如下方式给出产品编号:“product.ASP?Id=4”。现在,让我们构造一个函数,以产品编号作为参数返回相应的URL

  函数CreateProductURL(lProductId)

  strSQL=“从产品中选择产品型号”,其中Product\u Id=“&lProductId

  设置oRS=oConn.Execute(strSQL)

  如果(不是oRS.EOF),则

  标准模型=oRS(“产品模型”)

  如果结束

  CreateProductURL=“/”&strModel&“.htm”

  端函数

  %&gt

  现在,如果我们想添加一个URL,我们只需要按如下方式进行:

  “>洗碗机

  在本例中,我们假设我们不知道产品型号名称,但我们必须查询数据库才能知道。然而,事实上,情况可能并非如此。我们知道产品型号名称,可以直接创建URL,而无需再次访问数据库

  性能问题

  本文中描述的方法将显著影响性能。首先,为了创建静态URL,它需要一个数据库调用。其次,为了从404的URL中获得正确的URL,它还需要添加一个额外的数据库调用。最后,两个server.Transfer需要大量开销

  但是,一些性能问题可以通过Xcache()解决。Xcache可以将带有404错误的URL转换为正确的页面,并缓存信息以供后续请求使用

  实例

  请访问。这是应用此技术的一个示例。大多数分支页面(如餐厅和餐厅评论)都使用此技术,以便在搜索引擎中获得更高的评价。也使用Xcache

  总结

  使用IIS5.0自定义错误消息功能控制404个错误,可以为动态页面创建静态页面样式的URL。只要不需要为这些静态URL创建目录和文件,应该说创建有利于营销和搜索引擎排名的URL相对简单

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线