dp2OPAC近期进行了一系列改进,其中比较重要的是SEO(搜索引擎优化)方面的改进。
最新版本已经上传到服务器,各用户单位的系统管理员不妨下载后升级安装一试。
下面介绍一下SEO方面的改进。
原来的 browse.aspx 页面,也就是浏览页面,无论左边的树状目录部分和右边的记录内容显示部分,都是采用 ASP.NET 的事件驱动方式来实现的各种页面锚点,即借助javascript实现的功能,而不是纯粹的HTML <a>锚点。(注:也有可能实现为<a>的形式,但href为"javascript:xxxx"这样的形态,不是纯粹的<a>锚点)
我们知道,这样的页面形式,一般搜索引擎的网络爬虫是难以处理的,也就基本上不会去处理了。从技术上来说,除非网络爬虫采用了完全模拟普通浏览器的运行方式,并主动去触发这些javascript功能 --- 触发前网络爬虫也不能从形态上预测这些动作会产生什么效果(到底是创建一条评注呢还是跳转到另外一个页面?),因而这也正是网络爬虫不去触发的一个原因。而人类用户在使用浏览器的时候,是具有智能的,对触发后反馈的页面能从语义上进行理解,这恰恰是网络爬虫不具备的能力。联想到另外一个领域,就是程序自动测试浏览器页面的领域,这是个对于软件开发非常有意义的领域,但基于和前述相同的难题,很多时候还只能靠人工进行测试。
毕竟,一个浏览器页面,除了考虑为人类浏览器用户服务外,还要考虑到为网络爬虫服务,对它们也要“友好”。因为这是增强网站透明性,让网站内容能被搜索引擎顺利收录,从而让网站更好地被外界搜索访问,也就是常说的SEO的必要。
在 dp2OPAC 的若干类页面中,检索页面不太可能被搜索引擎直接利用。因为网络爬虫第一还没有智能到可以在文本框中输入一些检索词并且等待检索结果页面出来后去收录它们;第二即便能做到了前一点但网络爬虫也没有智能到能决定有效输入什么检索词来获取最多的网站内信息。因而,这类页面对于搜索引擎来说成为一个“暗黑世界”不可访问,是个现实的难题,是个现状也只好就接受了。
但 dp2OPAC 具有 browse.aspx 页面,幸好。browse.aspx 页面的功能本来就是为了给什么都不清楚的用户提供一种顺次浏览的设施,遍历网站内的所有书目记录信息。如果这个页面做得好,是应该能覆盖全部记录范围的,只要访问者有耐心一页一页翻看下去,终归能看完全部信息。顺次看完所有页面 -- 这在人来说难以做到(很多图书馆都有几十万几百万册藏书),但对于网络爬虫却是它们的看家本领,它们不知道累,而且速度极快。
但可惜 dp2OPAC 的先前版本具有上述 javascript 锚点的问题,把这个原本该有的功能给取消了,网络爬虫到了这里,找不到任何一个它习惯的纯粹<a>锚点,无计可施,等于网站内全部书目记录都看不到了。目前最新的版本解决了这个问题,把 browse.aspx 页面内的,对网络爬虫意义重大的锚点,都修改成了纯粹的<a>锚点。
具体来说,就是左边树状目录的每个节点,都是纯粹的<a>锚点,每个锚点指向一个具体类目的浏览页面;右边书目详细信息部分,也提供了纯粹的<a>锚点,每个锚点指向一条书目记录的book.aspx页面。
这里还不得不谈一谈详细信息部分的结构。由于先前的版本已经普遍采用了Ajax技术,实际上浏览页面初次到达浏览器的时候,书目内容部分不过是一个记录路径字符串,等待后面javascript代码从服务器再次获取到书目记录的具体内容后填充到页面内容中。也就是说网络爬虫在这里实际上是看不到书目记录的正文部分的。那这么说来岂不是搜索引擎还是没法收录和索引 dp2OPAC 的书目记录内容了?
别着急。因为浏览页面中通常每页十个书目记录的显示结构中,每一个书目记录显示区域的右上角是一个该记录的专属锚点,如果访问者去点一下,会发现到达book.aspx 页面,那里唯一显示了这条书目记录的信息。而且这个锚点并不是用Ajax后期在前端构造出来的,而是初次到达的HTML页面本来就有的。这样,网络爬虫会继续“爬”进去,为书目记录逐一收录内容和建立索引。
其实反过来想,每页十个书目记录的浏览页面,本身不适合让网络爬虫用来建立书目记录的索引,因为这是十条记录的公共页面,我相信现在的网络爬虫和分析模块还没有那么高的能力把每条记录的边界搞清楚。可能后面我们用上 HTML5 以后会有点希望,不过那是未来的事儿了。
此外,因为每10条1页的分页的缘故,新版本也把涉及到分页的锚点全部修改为纯粹的<a>锚点了。
为了服务好网络爬虫,book.aspx 页面故意没有采用 Ajax 技术来延迟获取书目内容部分。因为一般来说 Ajax 技术是网络爬虫的敌人了。还有另外一个原因,我们后面会讲到,也使得不能采用 Ajax 技术了。不过因为每一个 book.aspx 页面只是显示一条书目记录的信息,Ajax 有没有就基本无所谓了,对页面响应速度的影响不大。
到这里,我们小结一下:新版本采用了对网络爬虫友好的页面方式和技术,让整个网站的书目记录显示页面能被网络爬虫全部有效访问到。
说到 SEO,还不得不说到在HTML <head>元素中的<meta>元素,里面可以放DC元数据,这可是图书馆界的热门概念,精心制作的MARC书目数据本来是很擅长这个的。新版本在 book.aspx 页面中,会在<meta>元素中自动填写 DC 元数据字段信息。注意升级 dp2OPAC 的时候,请一并升级 dp2Library 模块,并且注意刷新每个书目库的 opac_biblio.fltx 配置文件,这个文件是定义书目详细页面内容部分的发生规则的,最新的这个配置文件里面增添了抽取 DC 元数据字段的功能。只有这些条件配合好,dp2OPAC 的 book.aspx 页面才会有 DC元 数据字段内容出现。
我们知道,搜索引擎是偏爱具有<meta>元素的网站页面的,这种结构化的数据让搜索引擎省去很多猜测的烦恼,能实现一些精准的检索功能;同时具有这种结构信息,也暗示网站页面的数据质量更高。