2.2.4 搜索引擎在网页上能"看到"什么内容(3)
下面是说明这种情况的一个简单JavaScript示例:
<script type="text/javascript">
document.write("It Is a Small World After All!")
</script>
<noscript>Your browser does not support JavaScript!</noscript>
NoScript部分的内容是Your browser does not support JavaScript!(你的浏览器不支持JavaScript)。搜索引擎将读取这段文本,将其视为网页的相关信息。在这个例子中,还可以选择让NoScript标记包含文本"It Is a Small World After All!"(世界毕竟很小!),这是更具描述性的内容。NoScript应该只用于精确地表现JavaScript的内容。(搜索引擎可能将这个标记中放置的其他内容或者链接当作垃圾制造者的行为。)此外,浏览器警告可能被搜索引擎用作你的页面在搜索结果中的描述,这是一件很糟糕的事情。
搜索引擎看不到的东西
搜索引擎"看"不到的内容类型也值得研究。
例如,尽管搜索引擎能够检测到你显示一幅图片,但是除非你在前面介绍的alt属性中提供了信息,否则它们无法得知图片展示的是什么。它们只知道图片中的某些基本的信息,例如,图片上有一张脸,或者图片是否含有色情内容(通过图片中有多少肉色来判断)。搜索引擎无法得知一幅图片显示的是Bart Simpson还是一条船,一所房子还是龙卷风。此外,搜索引擎也无法识别图片中显示的任何文本。搜索引擎正在试验使用光学字符识别(Optical Character Recognition, OCR)从图片中提取文本,但是这种技术还没有得到普遍的应用。
另外,传统的SEO观念一直认为搜索引擎无法读取Flash文件,但是这有些言过其实了。搜索引擎多年前就已经能从Flash中提取一些信息,这在Google 2008年的公告中就已经指出(http://googlewebmastercentral.blogspot.com/2008/06/improved-flash-indexing.html)。但是,搜索引擎不容易确定Flash里到底有什么。最大的问题之一是,即使搜索引擎探究Flash的内部,它们所寻找的仍然是文本内容,而Flash是图形化的媒体,没有什么因素能够驱使设计人员在Flash中采用文本(除了对搜索引擎的好处以外)。即使HTML与Flash一起使用,存在于HTML文本中的所有语义线索(例如,标题标记、粗体文本等)也都不见了。
而且,搜索引擎看不到Flash中包含的任何图片内容,这就意味着当Flash中的文本转化为矢量轮廓时,搜索引擎所能读取的文本信息也就丢失了。第6章将讨论优化Flash的方法。
音频和视频文件也不容易被搜索引擎读取。和图片一样,这些数据难以解析。在少数例外情况下,搜索引擎能够提取有限的一些数据,例如,MP3文件中的ID3标记,或者以AAC格式存在的具有嵌入式"注释"、图片和章节标记的改进型播客。不过,搜索引擎终究无法区分足球赛和森林火灾的视频。
搜索引擎也无法读取程序里包含的内容。搜索引擎实际上寻找的是网页源代码中人们能够看见的文本,这在前面已经论述过。在浏览器加载网页之后你所能看到的内容于事无补,只有在页面源代码中可以看到和阅读的信息对搜索引擎才有意义。
AJAX技术就是这样一个例子,人们能够看到它所显示的内容,而搜索引擎却无法看到。 AJAX是一种基于JavaScript的技术,用于从数据库中获取数据,然后在不刷新整个页面的情况下动态显示网页内容。这种技术常用于网络上的一些工具,当用户访问网址时提供某些输入,AJAX工具获取并显示正确的内容。
在用户输入信息后,在客户计算机(用户计算机)上运行的一个脚本负责获取内容,这成为问题的根源。这种方式可能造成许多不同的输出。此外,在接收到输入之前,内容不出现在页面的HTML中,所以搜索引擎无法看到。Google提供了建立可爬行的AJAX应用程序的具体技巧,你可以在http://code.google.com/web/ajaxcrawling/docs/getting-started.html看到。
一些其他形式的JavaScript在用户采取行动之前不显示HTML内容,从而造成了类似的问题。
在HTML 5中,创建了一个嵌入标记(<embed>)结构,这种结构允许在HTML页面中加入插件。插件是在用户计算机而不是网站Web服务器上的程序。这个标记常用于在网页中插入视频或者音频文件。<embed>标记告知插件在哪里寻找数据文件。通过插件包含的内容对于搜索引擎来说完全不可见。
框架(frame)和iframe是在网页中加入来自其他网页内容的方法。Iframe比框架更常用于插入来自另一个网站的内容。可以用下面这样的代码执行iframe:
<iframe src ="http://accounting.careerbuilder.com" width="100%" height="300">
<p>Your browser does not support iframes.</p>
</iframe>
框架一般用于分割发布者网站的内容,但它也可以用于从其他网站加载内容,图2-21中是《芝加哥论坛报》(Chicago Tribune)网站的一个例子(http://accounting.careerbuilder.com)。
图2-21是从其他网站获取内容(假设你得到了授权)并与自己的内容组合的一个好例子。但是,搜索引擎能够识别从其他网站拉取内容的iframe或者框架,从而忽略iframe或者框架中属于其他发布者的内容。换句话说,它们不将从其他网站拉取的内容作为独特内容的一部分。