htmlunit抓取动态网页(如何实现静态页面名字和动态页面的映射(图))
优采云 发布时间: 2021-09-23 18:07htmlunit抓取动态网页(如何实现静态页面名字和动态页面的映射(图))
动态生成的网页在网站真实*敏*感*词*网页的构建中不可或缺。然而,动态页面的名称(即其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(“查询字符串”)
%>
那么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”)
如果结束
%>
现在我们有了产品编号,在转换到正确的ASP页面之前必须保存它。我们无法通过server.transfer(这是IIS的限制)在查询字符串中传递产品编号,因此必须通过会话对象传递它
会话(“Id”)=lProductId
Server.Transfer(“/product.asp”)
%>
执行此页面时,浏览器地址栏中的内容如下:
由于使用了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”
端函数
%>
现在,如果我们想添加一个URL,我们只需要按如下方式进行:
“>;洗碗机
在本例中,我们假设我们不知道产品型号名称,但我们必须查询数据库才能知道。然而,事实上,情况可能并非如此。我们知道产品型号名称,可以直接创建URL,而无需再次访问数据库
性能问题
本文中描述的方法将显著影响性能。首先,为了创建静态URL,它需要一个数据库调用。其次,为了从404的URL中获得正确的URL,它还需要添加一个额外的数据库调用。最后,两个server.Transfer需要大量开销
但是,一些性能问题可以通过Xcache()解决。Xcache可以将带有404错误的URL转换为正确的页面,并缓存信息以供后续请求使用
实例
请访问。这是应用此技术的一个示例。大多数分支页面(如餐厅和餐厅评论)都使用此技术,以便在搜索引擎中获得更高的评价。也使用Xcache
总结
使用IIS5.0自定义错误消息功能控制404个错误,可以为动态页面创建静态页面样式的URL。只要不需要为这些静态URL创建目录和文件,应该说创建有利于营销和搜索引擎排名的URL相对简单