公告

Douban_NJU脚本技术细节说明

上个月写了一个名为 Douban_NJU 的 GM 脚本,其功用为在豆瓣读书页同时显示此书在南京大学图书馆的馆藏信息。

之后有读者留言希望我能再写一个南京图书馆的相应脚本,今天抽空写了出来,需要的可以去下载这个名为 Douban_NJLib 的脚本。

与其授人以鱼,不如授人以渔。所以这里就简单讲解一下之类脚本的工作原理及一些技术细节。

与普通的 GM 脚本不同,因为多数图书馆都未提供 XML、JSON 形式的返回结果,所以必须有一个服务端程序,负责解析图书馆页面,并以 XML 或 JSON 形式返回给 GM 脚本(Douban_NJU 使用的是 JSON 格式)。

其工作流程如下:

  1. 用户访问豆瓣某书籍页,GM 脚本读取此书的 ISBN 号,并将其传输给服务端程序;
  2. 服务端程序使用该 ISBN 号从图书馆网站取得此书的馆藏信息,并编码成 XML 或 JSON 的标准格式,传递给 GM 脚本;
  3. GM 脚本将取得的馆藏信息添加在页面上。

为了快速开发一个其它图书馆的对应脚本,GM 脚本部分只需修改第 42 行的服务端程序 URL。

服务端程序我已经打包上传在 uushare:http://www.uudisc.com/user/lightory/file/2036231

程序使用一个叫做 PHP Simple HTML DOM Parser 的类库,这个类的语法与 jQuery 颇为相似。你可以先看看这个类的使用手册,非常简单,只要稍微耐心一点,就能从图书馆页面中提取出需要的信息。

over……我自个都写得晕头转向了,果然不适合写技术类文章啊,希望对大家有些许帮助吧……

无觅相关文章插件,快速提升流量

15 条评论 立即发表评论

  1. rangerqu 说道:

    我去呼唤一下武大的童鞋赶紧弄一个…话说我们图书馆的检索页面倒是有豆瓣书评…

  2. XDash 说道:

    我们学校的图书系统完全封闭,怕童鞋占用电脑上外网,连外网都给掐了,够狠。

    • LiGht 说道:

      我们学校图书馆里的网络也是只能访问图书馆资源,不过外网还是可以访问图书馆网站的。

  3. 骷髅小鬼 说道:

    貌似不起作用啊,没哟显示南图的相关信息。

    • LiGht 说道:

      下午还OK的~~大概是南图网站的问题,它好像不太稳定,偶尔会连不上数据库。

  4. Holmesian 说道:

    我们这里 图书馆只能内网访问….

  5. 杀手爱喝牛奶 说道:

    感谢LiGht 的函数~

  6. [...] 没事喜欢逛逛豆瓣看看有什么好书好电影,所以装了几个针对豆瓣的Greasemonkey脚本,方便不少。昨天一时兴起用巫山霏云的脚本和lightory的函数拼了一个脚本可以在查看豆瓣图书时在页面右侧显示学校图书馆的馆藏情况。这样碰到想买的书就可以方便的知道能不能在图书馆借到以省顿饭钱了~ [...]

  7. udonmai‘ 说道:

    楼上的无法显示是不是因为仅仅转载了GM脚本的缘故?弱弱地问下,服务端程序怎么安置?

  8. dofine 说道:

    博主请问服务器端的程序能重新上传一下吗?uushare 里已经不能下载了~

  9. [...] userscript 脚本,比如这个南大的douban_NJU ,作者还做了简单的技术细节说明 ,还有全国各个学校的集合贴 [...]

  10. Lee Caomu 说道:

    uudisc已经关闭访客下载了,希望博主能传到别的网盘。麻烦了~~

发表评论...