![JavaScript解析:让搜索引擎看到更真实的网页_第1页](http://file4.renrendoc.com/view/12da5540664bff362b1ddca0ae677b4d/12da5540664bff362b1ddca0ae677b4d1.gif)
![JavaScript解析:让搜索引擎看到更真实的网页_第2页](http://file4.renrendoc.com/view/12da5540664bff362b1ddca0ae677b4d/12da5540664bff362b1ddca0ae677b4d2.gif)
![JavaScript解析:让搜索引擎看到更真实的网页_第3页](http://file4.renrendoc.com/view/12da5540664bff362b1ddca0ae677b4d/12da5540664bff362b1ddca0ae677b4d3.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaScript解析:让搜索引擎看到更真实的网页
引入JavaScript解析的目的,正是为了解决上述两方面的问题,其结果也就是使搜索引擎可以更为清晰的了解用户实际打开该网页时看到的效果。比如有些网站会将用户评论、评分等信息从网页HTML中抽离,利用JavaScript甚至AJAX等方法在页面被打开的时候动态显示出来,早期的搜索引擎此时能处理到的页面内容就是缺失的,由此会进一步影响对该页面索引价值的判断。要引入JavaScript解析,需要考虑本身的设计与实现、解析速度和对系统其它方面影响等因素,本文通过一些典型的案例来分析如何设计并实现一套网页JavaScript解析系统,并简要介绍这样的系统对于搜索引擎其它部分的作用和影响。一、发现页面链接一般来说,页面链接都是以HTML中的A标签形式存在,链接URL标记在href属性中,但实际存在着一些网站会选择更为“动态”的方式,较为常见的方式有两种:一种是动态写入或调整A标签,另一种是在用户点击的时候触发事件改变默认的链接打开方式。1.动态写入或调整链接标签抽象的说,网页要实现这样的效果,乃至后文描述的其它效果,与把大象放入冰箱极为类似,分为三步:找到要写入/修改的目标(找到大象),准备好要写入/修改的内容(打开冰箱门),执行写入/修改(把它放进去)。这三步操作映射到JavaScript上,就是先后调用三组标准的浏览器功能函数:页面元素定位、数据准备以及页面修改。那么,JavaScript解析的工作就是同样提供出这样的函数,随着被站长的JavaScript代码调用自然的发现相应的内容和行为。分析至此,所需实现的函数也就基本确定了,其中较为简单的包括:document.getElementById//定位document.getElementsByTagName//定位document.getElementsByClassName//定位node.[firstChild/nextSibling/previousSibling/parentNode]//定位document.[createElement/createTextNode]//创建链接node.[appendChild/insertBefore/innerHTML=?]//写入内容element.getAttribute,element.setAttribute//设置属性element.href=?//设置属性至于要写入的内容,可能是以数组等形式保存在JavaScript种,也可能是使用AJAX动态加载。前者属于JavaScript语言的内置功能,此处不再复述;后者是一个单独的话题,会在后文专门讨论。2.点击时触发事件改变默认的链接打开方式页面这样做的原因不一,有的是为了隐藏链接,有的是为了实现弹出窗口,有的则是为了程序拼接URL,还有的是做检查看是否应该打开链接等等。但所有这些原因都对应着同样的实现方法:添加click事件。添加click事件的方法有三种:1.将A标签的href属性设置为“javascript:func(…)”的形式2.设置A标签的onclick属性,设置为onclick=”js_code”的形式3.调用事件绑定函数,如my_link_node.addEventListener('click',func,false)支持这三种方法本身是较为简单的,需要注意的地方在于如何触发这样的click事件,以及如何在触发之后截获目的URL。对于触发事件而言,首先需要收集到所有可能的click事件,而后再依次触发。但对于每一个要触发的click而言,实际触发之前必须先检查其是否还存在,这是由于在其之前的click事件很可能已经把当前这个click删除掉了。要做到截获URL,首先要实现相关的页面跳转函数,既location.href=?,window.open等。而后通过设置一系列标志,将本次点击和页面跳转关连起来,如此也就得到了目标URL。二、动态页面内容页面动态内容是一种提升页面加载速度、增强网站技术灵活性的手段,可以将那些会改变的内容(如评论、评分等)抽离,使页面分为静态和动态两部分:静态内容可以使用缓存等方法加快页面显示速度、降低网站流量;动态内容则有格式简单好生成的优势,同时也能节省流量。另一方面,动态内容也是加载广告和内容作弊的重要方法,最常见的就是写入iframe,这对于早期搜索引擎而言有极大的隐蔽性。在技术层次上,动态页面内容所需要的工作与上一节“动态写入或调整A标签”在很大程度上是相同的,这里需要增加的是经典的“document.write”方法。该方法是最早的JavaScript功能之一,用于向页面直接写入一段HTML代码,至今仍在广泛使用。对于该方法,早期的搜索引擎都有所支持,但方法基本限于字符匹配,仅能支持最直接的写入一个JavaScript字符串的方式,对于稍微复杂的文本拼接显得无能为力。但对于JavaScript解析而言,这段代码终究是要符合语言规范的,因此就能做到完整支持,处理文本拼接、条件判断和混淆代码等各种情况。这里还需要讨论的一点是嵌套的document.write,也就是通过document.write写入一个SCRIPT标签,该标签内部是另一段document.write。这类问题在跳转作弊页面中屡见不鲜,对其支持就不只需要JavaScript解析,还需要HTML解析器能够支持处理嵌套的HTML写入功能,这里就不加以分析了。通过上述方法,无论是网页的主体信息,还是广告或其它辅助信息,都会被暴露出来,从而更好的理解站长意图。三、网页跳转网页跳转在有些情况下是达到页面效果的必要选择,但同样会用于作弊。在技术上,多以下面两种方式出现:1.直接调用页面跳转函数2.针对搜索引擎的UA、referer等调用页面跳转函数这里要实现识别,最核心的就是实现页面跳转函数:location对象。由于这是技术上唯一的JavaScript跳转函数,所以无论页面的JavaScript如何撰写如何混淆,最终都会调用该函数。因此,尽管不同页面的跳转代码看上去五花八门,但识别出来却是简单的。四、关于AJAXAJAX是极为常见的网页技术,根本上说就是在网页显示期间,动态的从互联网上获取一段数据(可能是HTML也可能是其它),经过处理后加以显示。对于该技术,根本的工作并不在于XMLHttpRequest对象的实现,而是在于对搜索引擎爬虫架构的影响。众所周知,爬虫抓取页面,遍历其链接,再依次抓取的形式设计的,其工作主要集中在调度和控制抓取压力上,抓取器本身较为简单,通常不具备抓取后即时执行JavaScript并抓取AJAX数据的能力,因此需要技术升级方可支持AJAX。对抓取器的分析超出了本文的范围,有兴趣的读者可以查看其它相关文献。总结通过前面的案例分析,我们总结出了实现JavaScript解析所需要的基本工作,此外再增加一定的基础性建设就能构成一套较为完整的系统了。这里我们再次整理一下,将其分为三个部分:1.在HTML解析器中嵌入JavaScript语言引擎,语言引擎可以选择V8、SpiderMonkey等成熟的开源方案。2.实现所需的功能函数,具体可参考W3C的相关HTML和DOM规范。3.作为一个直接推论,需要收录所谓的.js文件,这是JavaScript解析所需要“解析”的源代码。本文中介绍的功能仅是一部分较为常见的JavaScript功能,要让搜素引擎真正看到实际的页面还需要进一步实现其它需要的功能,此
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (高清版)DB37∕T 3048-2017 自主可控软件测试与认证规范
- 《避雷器测试》课件
- 【语文】学习活动三 辨识媒介信息课件 2024-2025学年统编版高一语文必修下册
- 《财务预算》课件2
- 语言和感知课件
- 秘书公共卷复习测试题
- 环境监测站-水分析练习卷含答案
- 汽车底盘电控系统检修-练习测试题附答案
- 二零二五年度文化传播公司艺人经纪合同
- 临床化疗药物外渗预防处理
- 2024-2025年第二学期团委工作计划(二)
- 骆驼养殖开发项目可行性报告设计方案
- 物理-河南省郑州市2024-2025学年高二上学期期末考试试题和答案
- 2025年南京信息职业技术学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 二零二五年知识产权共享及收益分成合作协议3篇
- 北师大版二年级数学上册计算题专项复习大全272
- 屋顶分布式光伏电站设计及施工方案
- 《幼儿教育政策与法规》教案-单元3 幼儿园的开办与管理
- 2024年09月2024渤海银行天津滨海新区分行校园招聘笔试历年参考题库附带答案详解
- 2024低血糖的急救诊断和治疗
- 期末考试成绩分析报告课件
评论
0/150
提交评论