首页 > 优化 > 关键词 > JavaScript最新资讯 > 正文

JavaScript解析:让搜索引擎看到更真实的网页

2012-07-03 16:33 · 稿源:百度搜索研发部官方博客

长期以来,站长们选择使用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如何撰写如何混淆,最终都会调用该函数。因此,尽管不同页面的跳转代码看上去五花八门,但识别出来却是简单的。

四、关于AJAX

AJAX是极为常见的网页技术,根本上说就是在网页显示期间,动态的从互联网上获取一段数据(可能是HTML也可能是其它),经过处理后加以显示。

对于该技术,根本的工作并不在于XMLHttpRequest对象的实现,而是在于对搜索引擎爬虫架构的影响。众所周知,爬虫抓取页面,遍历其链接,再依次抓取的形式设计的,其工作主要集中在调度和控制抓取压力上,抓取器本身较为简单,通常不具备抓取后即时执行JavaScript并抓取AJAX数据的能力,因此需要技术升级方可支持AJAX。

对抓取器的分析超出了本文的范围,有兴趣的读者可以查看其它相关文献。

总结

通过前面的案例分析,我们总结出了实现JavaScript解析所需要的基本工作,此外再增加一定的基础性建设就能构成一套较为完整的系统了。这里我们再次整理一下,将其分为三个部分:

1. 在HTML解析器中嵌入JavaScript语言引擎,语言引擎可以选择V8、SpiderMonkey等成熟的开源方案。

2. 实现所需的功能函数,具体可参考W3C的相关HTML和DOM规范。

3. 作为一个直接推论,需要收录所谓的.js文件,这是JavaScript解析所需要“解析”的源代码。

本文中介绍的功能仅是一部分较为常见的JavaScript功能,要让搜素引擎真正看到实际的页面还需要进一步实现其它需要的功能,此外还需要配合对HTML、CSS、图片等资源的支持。

最后,对于希望使用JavaScript的站长来说,本文给出如下建议:

1. 不要使用过于复杂的JavaScript技术,这不利于搜索引擎的收录

2. 不要阻止对.js文件的收录,否则会限制JavaScript解析的能力

3. 合理的划分站点的静态部分和动态部分

by Lileding

文章来源:百度搜索研发部官方博客

  • 相关推荐
  • 大家在看
  • 不知道搜索引擎喜欢什么内容,做再多原创也没用

    SEO行业一直都说“内容为王”,虽然原创对排名有很大帮助,但也有很多人的原创内容根本没有排名,为什么。我们来一起分析下背后的原因。

  • 跟全网客一起来看一看如何做到搜索引擎霸屏

    实际上现在在搜索引擎当中,已经对于各类广告的投放做的比较精准了,由于大数据时代存在不再需要把各类信息投放给每一个消费者,而是有的放矢的进行投放。举个简单的例子来说,如果是篮球用品的话,投放给18岁到58岁之间的男性朋友,销量情况肯定会更好一些。于是在这种情况下,我们就要讨论一下搜索引擎霸屏究竟是怎么实现的,以及这类服务商都是如何操作的。一个懂得精准营销的平台很重要。但我们在做营销推广的过程当中,首先是要选择好?

  • 微软为Xbox推出Bing应用 让搜索引擎在游戏机上也更好用

    微软宣布为Xbox游戏机推出一款新的Bing应用,目的是让该公司的搜索引擎在其游戏硬件系列上更容易访问。在基本功能方面,它就是你所期望的Bing应用程序,例如提供网页和图像搜索,区别在于是用游戏机访问的而不是使用手机或PC。

  • 谷歌宣布其搜索引擎的另一项新功能:“哼歌识曲”

    据外媒CNET报道,谷歌周四公布了其搜索引擎的一些新功能。其中一个新技巧可以让人们哼唱录音,试图找出一首一直想不起歌名的歌曲。这家科技巨头还将让人们通过实时更新看到一个公园、餐厅或其他企业的繁忙程度。谷歌搜索上的一项新的增强现实功能可以让人们选购汽车,并进行虚拟游览。谷歌在周四的一次预录的在线活动中宣布了这些消息。

  • 微软Bing在13个国家的Android搜索引擎选单拍卖中胜出

    为了遵守欧盟委员会对Android的决定,谷歌去年宣布,将允许欧洲的Android用户在设备设置过程中选择默认搜索引擎来负责主屏幕搜索框和Chrome浏览器的入口工作。如果有三家以上的搜索供应商希望被列入选择界面,谷歌将进行拍卖。

  • 校友录头像被爬取搜索引擎未及时删除 网友起诉获赔1元

    因发现其上传至校友录的头像证件照出现在百度搜索结果中,原告孙某某以百度网站侵犯其隐私权、个人信息权益为由,诉至法院,要求判令北京百度网讯科技有限公司赔偿其经济损失 1 元和维权费用 40 元。法院一审认定,姓名与证件照结合构成个人信息,虽孙某某未授权校友录网站对涉案信息进行全网公开,但百度网站作为搜索引擎服务提供者,无法预见一般公开网络信息为未经授权公开的个人信息,其搜索行为不存在过错,但收到通知后应及?

  • 美国政府将对谷歌搜索引擎提起反垄断诉讼

    美国政府已准备对谷歌搜索引擎提起反垄断诉讼,指控该公司“破坏竞争,保护和扩大垄断”。彭博社报道称,在这之前,美国司法部对谷歌是否扭曲搜索结果以偏袒自己的产品,并关闭对竞争对手的访问渠道进行了长达 14 个月的调查。站长之家了解到,谷歌占据了美国在线搜索市场90%的控制权,为该公司创造了 1000 亿美元的收入。长期以来,竞争对手一直抱怨谷歌滥用权力“扼杀竞争”。消息人士告诉彭?

  • 营收1000亿美元 谷歌搜索引擎要被告了:破坏竞争

    谷歌靠搜索引擎起家,现在要惹上麻烦了,美国很快就要对他们在搜索引擎上的垄断采取法律行动。谷歌的搜索引擎是很多人离不开的,寻找网页和资料必不可少,它也给谷歌带来巨额利润,每年贡献10

  • 优化Banner广告收入的7种策略

    要使发布商获得最大利润,就需要优化Banner广告。广告的错误放置会降低点击率(CTR),导致收入暴跌,最糟糕的是:并非每个受众都会以同样的方式做出反应。

  • SEO内容优化,为什么需要关注语义相关性!

    ​众所周知,这是一个内容为王的时代,无论是SEO、社交媒体、新媒体等一些列营销人员,每天都会创造大量的原创文章,我们知道人工智能逐渐的渗透到每个领域,自从谷歌 2015 年开启Rankbrain后,它在搜索领域扮演着重要的角色,特别是在创建内容方面,给予我们很大的提示。

  • 北京胜学网校:优化服务,提升产品价值

    北京胜学网校隶属于北京胜学科技有限公司, 24 年办学经验,“无问责之心、不教书育人”的教育理念和一以贯之的身体力行,树立了“胜学”在 10 余万学员心目中的金字招牌。 24 年来,胜学教育始终贯彻“开放共赢”的大发展思路、树立“人人皆可成才”的人才理念,不断完善“严谨治学、苛求服务”的产品优化体系。 开放型发展思维 北京胜学网校一直致力于以“开放的思维”办大家需要的网校,欢迎和鼓励所有社会优秀人才、公司同仁?

  • 首选赋能计划:双特色-现实的科学优化和未来的科学规划

    伴随高等教育招生规模的不断扩大,大学生就业问题引起了社会各界的高度关注。尤其在当今世界范围内由疫情引起的经济危机影响下,大学生就业形势变得更加严峻。但在待就业的学生群体中,职校学生却拥有了更大的发展舞台和就业空间。近年来,国家不断重视职校学生发展,同时企业对于具有专业技能和工作素养的学生需求越来越大。积极培养职校学生职业素质教育,对于职校学生未来就业将产生很大的作用。重视学生职业素质的培养是解决学生就业

  • 翼龙贷不断优化风控系统将翼龙贷风险降到最低

    风险控制是金融行业内最常见的名词之一,目前网贷平台的风险控制主要指信用风险评估,也就是在借款业务中。风险控制按照名字来解释就是“指风险管理者采取相应的措施与方法,消灭或减少风险事件发生的可能性,或者减少当风险事件发生时造成的损失”。 对于网贷平台来说,风险控制的关键点就在于借款业务发生前的借款方的信息审核。如果在这个环节把控的非常好的话,那在后续的贷中控制和贷后管理就会相对轻松很多。那么,对于这些?

  • 深度算法优化 金山云低延迟直播码率再节省12%~17%

    今年以来,疫情让互动课堂、线上会议、连麦等实时互动的场景迅速升温,数千万、数亿人的同时在线本来对网络就是一场巨大的考验,低延迟直播更对算力和网络提出前所未有的挑战。 作为在视频云领域一流的技术服务提供商,金山云不断在低延迟算法上进行探索优化,让码率带宽更加节省。 低延迟深度算法优化 带宽压缩12%~17% 众所周知,低延迟直播需要具备较为苛刻的限制条件:1.带宽受限且面临弱网压力;2.对延迟的要求高;3.视频画面中

  • 蝉大师独家上线:一键知晓iOS14对我的App的优化影响

    iOS14 正式版上线后,许多用户都沉迷于各种屏幕小组件,但对于ASOer来说,更关注的iOS14 对于自身产品的影响。此前蝉大师结合数据分析发现:iOS14 在榜单和热搜数据与iOS13 相比没变化,主要变化集中在建议词与修正词。许多ASOer对此表示困惑,iOS14 新出现的推荐词对自家产品具体会有什么影响?后续该怎么调整优化关键词呢? 基于此,蝉大师在全面支持iOS14 系统关键词数据的基础上,重磅推出了三大贴心功能: 1 增iOS14 关键词诊?

  • 腾讯发布TIM 3.2正式版:稳定性提升 优化使用体验

    TIM是腾讯为团队沟通协作打造的聊天工具,支持云文件、在线文档、邮件收发、日程等办公功能。今天,TIM 3.2正式发布,该版本没有带来新功能,主要是在TIM 3.1的基础上优化了一些体验问题,提升

  • 磁力链接常见的链接形式有哪些 迅雷磁力链接开头是什么

    很多用户在使用迅雷等下载软件的时候不知道磁力链接的开头是什么样的,作为比较常用的一个磁力链接,以下我们来看下迅雷磁力链接开头具体连接形式。

  • 网易伏羲论文入选AI顶会NeurIPS:优化算法提升强化学习效率

    近日,神经计算和机器学习领域极负盛名的顶级会议NeurIPS(Advances in Neural Information Processing Systems, 简称NeurIPS,前称NIPS)揭晓论文收录名单,网易伏羲实验室的论文《学习利用奖赏塑形:奖赏塑形的新方式》(《Learning to Utilize Shaping Rewards: A New Approach of Reward Shaping》)入选,凸显了国际顶尖的科研实力。NeurIPS(神经信息处理系统大会)是人工智能、机器学习和计算神经科学等领域的顶级学术会议

  • 乐敦谢谢你!乐敦爱用者之声是不断优化提升产品的灵感来源

    乐敦谢谢你!乐敦爱用者之声是不断优化提升产品的灵感来源

  • Windows 10新任务管理器上线:专为玩家优化、释放设备性能

    微软为Windows 10游戏玩家准备的全新任务管理器已经悄然上线,其可以更好的释放设备性能,让系统更加优化。事实上,微软一直在开发现代化的任务管理器,未来能够在不离开游戏或者导致游戏崩溃

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议
  • 热门标签

热文

  • 3 天
  • 7天