从早期那卷帙浩繁的馆藏书目、繁重的手工精心录入的索引卡,到后来不同程度上的自动化检索技术;从像Dialog与LexisNexis那样的收藏有海量专业信息的公司,到现在费用昂贵的医学、房地产和法律等私营研究服务:海量数据的搜索引擎的肇始要比万维网领先几十年。
那时候,数据收集的检索并不总是那么容易。但只要用点技巧,再加上足够的耐心,就有可能对它们进行彻底的搜索:一般做法是将信息按照已建立的知识本体进行分类,将数据按照特定的指导准则进行预先格式化。
这后来才有了网络。
网络上的信息——任何一个曾经浏览过若干网页的人都知道——其格式多种多样,可信度参差不齐,内容亦新亦旧,有的连拼写检查都过不了关。虽然如此,搜索引擎异峰突起,致力于检索迅速增长的在线信息,最终,针对普通网页的通用部分(如网页标题或URL)形成了多种专用搜索语法结构。搜索引擎技术进展神速,其目标瞄准数以亿计的在线文档之间的细微差别,这种努力从来没有停止过。
1998年,GoogleTM 宣布角逐搜索引擎市场。实际上,Google脱胎于一个名为BackRub的搜索引擎服务,它的名字源于英文单词“googol”(表示数字1后面跟100个0)。从一开始,Google就与其他的在线搜索引擎(如AltaVista,Excite,HotBot等)存在着明显的区别。
这首先体现在技术上:Google搜索结果的关联度非常突出,值得称道。不仅如此,在用户界面上,Google也是精益求精,这使得它在互联网上站稳了脚跟。
Google搜索结果的表述方式十分友好,其搜索功能不断地扩展,因此,青睐它的用户也就越来越多,这不足为奇。一些Weblog对此有专门的统计。而ResearchBuzz等搜索引擎时事通讯则卖力地对Google进行跟踪报导。还有相当一批的Google爱好者正乐此不疲地挖掘其功能特性、编写Google游戏(如Google Whacking,译注1),甚至专门为Google创造新词汇(如“Googling”,其意为依据Google的搜索结果来决策约会、雇用等事件的习惯行为)。人们用Google来寻找雇主,安排约会,购买商品或者服务,处理学校的作业,查询电影简介、实事和小说,或者用于娱乐,甚至赚钱。
到本书写作的时候为止,Google涵盖了互联网上超过80亿个网站页面,8.8亿幅以上的图像,8.45亿条的网络消息,而且,Google刚刚发布了Google Print(http://print.google.com),使得其中的内容一下子传遍了全世界。
2002年4月,Google向其用户群发布了Google API。Google API可以让程序开发人员通过自动化查询的方式合法访问Google的搜索结果。如果所有的搜索、过滤和排序都必须手动完成,那么要电脑似乎就没有什么意义了。
为什么要深入Google hack?
“Hack”一词一般被理解为以“quick-and-dirty”(方便法门)的方式来解决编程问题,或深入钻研某门技术以实现特定功能。但这种行为又是怎么跟Google联系在一起的呢?
从Google搜索结果的数量上来看,有时候,我们想搜索某个特定的或者精确的结果,但是搜索引擎返回的结果却远远多于所需的结果,很多数据结果对用户毫无用处。而有的时候,目前的搜索界面又不能很好地支持我们的特定搜索要求。
本书并不致力于详细讲解每一条Google搜索指令(尽管我们确实对此介绍得比较详细,而不仅仅是简单地提到而已),而是着眼于挖掘实用的搜索技巧,展示在进行自动查询的时候,如果只知道一点关于如何编程的知识就能实现哪些功能。换句话说,就是如何进行hack。
本书的组织方式
Google的myriad服务,再加上超过40亿个网页收藏中所蕴含的动态数据,发挥你的想像力吧,它会让你发现无数通往最佳搜索的捷径。本书不仅是一本搜索指南,还将直接带你到达黑客独有的境界——技巧、诀窍,还有能使你大长搜索本领的各种技术,让你的搜索更加充满乐趣,更加出神入化!
本书分为以下几章:
第一章,网页(Web)
本章阐述Google进行搜索工作的基本原理。读者在阅读完本章之后,可以学习到用于Google的专用语法(也可以看作是“special sauce”)的一些技巧和手段,以及一些特殊的搜索,如phonebook(电话簿),calculator(计算器),package(包裹)和stock tracking(库存跟踪)等等;另外还有关于Google 隐藏页面和相关链接等内容。本书不是单纯地列出“this syntax means that”(这个语法能做什么),书中还会讲解到对每个语法如何扩展搜索功能——以及如何混合搭配使用语法,使得它们的功能更加强大。
第二章,高级网页(Advanced web)
本章可以让用户将刚刚学会的一些简单的技巧提升一个档次,帮助用户学会如何使用Google的hack程序,进行自动搜索、获取信息以及重新组合。在本章中,用户可以对网络搜索进行更深入的挖掘,让自己得到更多从来没有见过的、没有想过的结果。
第三章,图像
在前面的章节中我们都是讲述关于文本内容的搜索,现在让我们来休息一下,看看网络上的那些好看的照片、图标、图画以及其他Google图像,可以为你搜索和提供的视觉享受吧。
第四章,新闻组和论坛
Google新闻组可以为用户提供每天的重要新闻和事件。在论坛中,可以随意地讨论任何感兴趣的话题,用户还可以建立属于自己的论坛。
第五章,附加功能
除了浏览网页,用户还可以将Google整合到自己的工具栏中、桌面上甚至文字处理软件中。本章介绍如何充分利用Google的优点来完成一些附加功能。在go上通过电子邮件或即时信息(通过电话或PDA)搜索。
第六章,Gmail
Google Gmail并不是普通的网络邮件服务系统。它具有简洁、交互性强、实用性强的特点——像JavaScript写成的网页;它有数十亿字节的存储空间,可以让用户随意使用。还有一些很神奇的功能,如果不真正试试,用户可能永远也体会不到它的强大。
第七章,广告
Google AdSense可以在用户的站点或者Weblog上产生很好的以文本为主的广告——无论量有多大或者多小。AdWords可以帮助用户在网络上提高自己广告的可视性,以创造更多的利润。
第八章,Web网站管理
作为一名网上冲浪者,你可能会站在两种不同的立场上看Google:一种是普通搜索者的立场,另一种则是那些尽量想使某个Web站点在搜索排名中更加靠前的人所持有的立场。从本章用户可以了解到Google那声名卓著(狼籍)的网页排名(PageRankTM),学到如何为Google的来访做好清理准备工作,以及如何确保用户的网页不被Google收录(如果真的不想被收录的话)。
第九章,Google编程
本章介绍本书所属许多技巧中的Google应用编程接口(API)。如果你还未曾亲自进行过编程,那么这里是激发你灵感的好场合。
如何阅读本书
你可以逐页阅读本书,但实际上绝大部分hack之间并无太多的关联。因此你尽可以随意翻阅,挑选最感兴趣的章节来看。如果你是一位Perl“新手”,你可以先学习稍微简单一点的hack,等有把握之后再研究更高级的黑客技巧。
如何运行hack
本书中的一些hack程序代码,既可以在命令行中运行(对于Mac OS X用户,命令行是Terminal,对于使用Windows操作系统的用户,可以使用Windows中的DOS命令窗口)或者作为CGI脚本(scripts)——用户网站中使用浏览器浏览的动态页面。
命令行脚本(Command-Line Scripts)
在命令行运行hack程序时,下面这些步骤都是必不可少的:
1. 将程序输入到garden-variety文本编辑器中:在Windows系统下使用Notepad,Mac OS X系统中用TextEdit,UNIX/Linux系统中用vi或 Emacs。按指示将文件保存下来:通常情况下默认为scriptname.pl(文件名中的pl字节代表Perl,是在Google Hacks中使用的主要编程语言)。
用户还可以在线下载所有的hack代码,网址是http://www.oreilly.com/catalog/googlehks2,下载下来的ZIP文件解压缩之后可以得到一些保存为文本文件的脚本。
2. 找到电脑上或远程服务器上的命令行。在Mac OS X中,运行Terminal(Application→Utility→Terminal)。在Windows操作系统下,单击“开始”按钮,选择“运行...”,输入“command”,按回车键。在UNIX操作系统下……当然,相信读者应该已经知道如何进入命令行了,这里就不赘述了。
3. 找到在本地保存过的脚本文件。当然,对于不同的操作系统,需要进行的操作可能会有所不同,不过通常会包括类似于cd~/Desktop之类的命令(这是在Mac中进入用户桌面的命令)。
4. 运行编程语言的解释器(如perl)可以调用脚本(如scriptname.pl),方法如下:
$ perl scriptname.pl
通常,用户还有一些工作要做,比如须要设定一些参数——搜索查询,用户希望的结果数等。设定这些参数的方法也很简单,在脚本名称的后面加上它们就可以了,不过记得如果某些参数需要不止一个字母,比如包含两个或者三个字母的话,需要用引号扩起来:
$ perl scriptname.pl '"much ado about nothing" script' 10
通常情况下,用户的脚本的结果通常会直接发回到用户正在使用的命令行窗口中,例如:
$ perl scriptname.pl '"much ado about nothing" script' 10
1. "Amazon.com: Books: Much Ado About Nothing: Screenplay ..."
[http://www.amazon.com/exec/obidos/tg/detail/-/0393311112?v=glance]
2. "Much Ado About Nothing Script" [http://www.signal42.com/much_ado_about_nothing_script.asp]
...
为了缩减篇幅,我们用后面的省略号(...)字节省去了后面的输出结果。
电脑输出的结果会快速地在屏幕上滚过,无法让用户详细阅读这些结果。如果用户希望仔细浏览,大多数系统都可以将输出结果转到(也叫redirect)一个小程序当中,用户只需要输入:
$ perl scriptname.pl | more
这样,再按键盘上的回车键,就可以逐行显示输出结果了,如果希望逐页显示,可以按空格键。
有时,用户可能希望直接将输出结果保存到其他文件中,作为安全备份,或者导出到电子表格应用程序中,亦或者在用户的网站上显示出来。其实方法也很简单,用户可以参考下面的代码:
$ perl scriptname.pl > output_filename.txt
如果用户希望将输入内容从文件输入到脚本中,可以用下面的代码:
$ perl scriptname.pl < input_filename.txt
如果你记不住这些也不用担心;每一个技巧中都有一段文字说明如何“运行这个hack”,并且有些甚至还用一些篇幅列出了“运行结果”。
CGI脚本
CGI脚本——在用户的网站上运行的程序,用于产生动态的页面——对于不熟悉它的用户来说,用起来就有一点复杂了。但是归根到底,从本质上来说它与脚本是同类的,都是在命令行运行的程序,但是由于系统的差别,它们的安装模式有所不同,这常常成为困扰用户的因素之一。用户可能使用自己的服务器,也可能在互联网服务提供商(ISP)提供的主机上建立自己的网站,也可能将自己需要的内容建立在合作内联网的服务器上——或者使用一些综合的、介于这几种方法之间的解决方案。
限于本书章节所限,不可能将每种方案都面面俱到地向读者介绍,笔者推荐用户检查一下ISP的技术情况,或者向他们的技术支持部门了解一下,也可以求助于用户本地系统的管理员。
虽然各种方法可能有一些差别,但是一般来说,方法体系都是相同的。
1. 将程序输入到一般的文本编辑器中:在Windows系统中的文本编辑器是Notepad,Mac OS X的文本编辑器是TextEdit,在UNIX/Linux系统下文本编辑器是vi或者Emacs。用户可以直接将文件按指示保存下来——通常默认的文件名是scriptname.cgi[文件名中的cgi字节表示此文件是CGI(通用网关接口程序)脚本]。
另外,用户还可以从网上在线下载所有的黑客代码,网址是http://www. oreilly.com/catalog/googlehks2,下载下来的ZIP 文件解压缩之后可以得到一些保存为文本文件的脚本。
2. 将保存过的脚本文件移到用户网站所在的主机处。在用户的服务器上应该有一个目录用于保存用户网站的所有页面(所有的扩展名为.html文件)和图像文件(所有扩展名为.jpg、.gif等的文件)。在这个目录下,用户应该可以找到一个名为cgi-bin的目录,CGI脚本文件保存在这个目录下,因为只有在这个目录下保存的CGI 脚本可以运行,而其他目录下保存的CGI 脚本文件都只能用网页浏览器显示和浏览,不能运行。
3. 对于CGI脚本,用户当然希望它们是可以执行的——运行程序而不仅仅是显示。具体的方法视不同的系统而定。如果使用的是UNIX/Linux系统或者Mac OS X系统,应该将下面的代码输入到命令行中:
$ chmod 755 scriptname.cgi
4. 现在,在浏览器中调用脚本文件,就可以按照预期的方式运行了,运行的方式与本书“运行hack”章节中所描述的方式相似,读者可以参考。
同样,用户使用什么URL也是有很大差别的。读者如果需要,可以参考下面的超链接地址:http://www.your_domain.com/cgi-bin/scriptname.cgi,这里your_domain.com是用户网站的域名,cgi-bin指用户的CGI脚本所在的目录,scriptname.cgi是指脚本文件本身。
如果用户还没有域名,也没有自己的服务器,而是使用ISP的解决方案作为主机,这时的URL应该是类似于下面这样的形式:http://www.your_isp.com/~your_username/cgi-bin/scriptname.cgi,这里的your_isp.com是用户所委托的ISP的域名,~your_username是用户在ISP那里使用的用户名,cgi-bin指用户的CGI脚本程序所在的目录,scriptname.cgi代表脚本程序本身。
如果用户在操作过程中出现类似“Internal Server Error(内部服务器出错)”的提示,或者看见错误代码500,说明出现了一些问题。如果用户遇到这样的问题,可以自己进行纠错,也可以找ISP或者系统管理员,向他们寻求帮助。调试程序——尤其是CGI 的调试——对于新手来说可能有些困难,不过如果遇到问题,可以求助于Frequently Asked Question(FAQ,常见问题):“解决Perl CGI问题的使用手册”。用户可以使用Google查询相关的信息,然后按照查到的步骤进行操作。
使用Google API
读者可以在第九章中了解到关于Google API的一些内容,包括如何注册一个开发者密钥——读者在阅读本书的时候,可能会发现很多hack都需要它——还有用一些计算机语言编写的Google程序。
学习编程
想不想自己试试亲自编写程序代码?由Randal L. Schwartz和Tom Phoenix编写的O'Reilly最畅销的书“Learning Perl”(http://www.oreilly.com/catalog/lperl3)可以帮助读者实现自己编程的想法。读者可以用从中学到的东西来理解和使用本书中的hack,而且可以更好地应用书中“活学活用”部分的内容来更改或者扩展一些脚本。如果用户对搜索还不太熟悉,那么可以从更改一些现成脚本开始,因为这需要的编程工作量较小,比较容易和安全一些。
如何获得更多的内容?
Google的功能太多了,需要学习的东西也太多了,本书很有可能漏掉一些小的功能,或者那些新提供的功能。用户可以随时关注Google的“More, more, more”页面(http://www.google.com/options),来获取更多的信息。如果想了解Google的最前沿信息,可以订阅Google的非正式blog(http://google.blogspace.com)以及正式blog(http://www.google.com/googleblog)。
你是Google迷吗?如果是,如果你希望自己的生活中体现出Google的影子,可以到Google专卖店(网址是http://www.googlestore.com)去购买带有Google商标的灯、杯子、T恤、靠背或者书。
习惯
下面列出了本书所采用的一些格式的含义:
斜体(Italic)
本书中斜体字代表一些新的术语、链接地址、文件命、文件扩展名、目录、程序名以及例子中的注解。比如,引用文件路径一般用下面的形式:/Developer/Applications。
等宽字体(Constant Width)
用来显示代码举例、注释和选项,以及文件内容、命令输出内容等。
等宽黑体(Constant Width Bold)
用于强调某个内容,或者表示输入代码。
等宽斜体(Constant Width Italic)
用在例子和表格中,表示需要读者在使用的时候用其他内容代替的部分。
灰色字体
除了黑色以外,第二种颜色表示本章的交叉参考内容。
用户应该格外注意正文之外用下面这两个图标分割出来的内容:
这个图标表示这段文字是提示、建议或者一般的注意事项。它会给读者提供与正文相关的额外补充信息。
这个是提醒读者注意或者小心的图标。
在每个hack旁边看到的温度计图标,说明某个hack与本书中其他hack相比的相对复杂程度:
入门级 中级 专家级
使用代码样例
本书的内容是为了帮助用户完成有关Google使用的一些特殊功能。总地来说,用户可以直接在程序或者文档中使用本书提供的代码,不需要与我们联系和询问有关许可的问题。不过,不允许读者使用里面的代码进行盈利活动。例如,如果用户想使用书中的几段代码来编写程序,不需要事先得到许可。不过如果是想将O'Reilly书中的代码或者例子制成光盘出售,就必须经过许可才行。可以引用本书的内容或者代码样例来解决其他问题,但是如果想在你的产品说明书或者文档中使用一些重要的代码样例,就需要事先得到许可。
如果有读者引用本书的内容,我不要求你一定将本书的作者出处注释出来,不过如果你愿意,我会很感激。比如,引用“Google Hacks, Second Edition, byTara Calishain and Rael Dornfest. Copyright 2004 O'Reilly Media, Inc., 0-596-00857-0.”
如果你对于使用本书中的样例是否属于侵权行为还不太确定,建议你先和我们进行联系和商议,以便避免发生不必要的麻烦。你可以用下面的电子邮件免费和我们进行联系:permissions@oreilly.com。
Safari Enabled
不知道有没有读者注意过一些技术书籍的封底上有Safari Enabled图标?如果有,意味着这本书可以通过O'Reilly Network Safari Bookshelf进行在线使用。
Safari给用户提供了一个优于电子图书的解决方案,这是一个可视化图书馆,它可以让读者很容易地搜索到数千部技术方面的书籍,随意剪切和粘贴上面的样例,下载某些章节或者查找一些精细的信息。用户可以自己试试,网址是http://safari.oreilly.com。
如何联系我们
我们已经尽可能地测试和完善本书给读者提供的信息和技术了,但是我们不能保证书中提供的功能完全没发生什么变化(甚至书中出现错误!)。如果有热心的读者阅读了本书,并且发现什么可以改进的功能,请将这些信息反馈给我们。如果有任何的错误、缺陷,或者误导读者的地方,以及不清楚的地方,甚至印刷上的问题,请批评指正,我们不胜感激。
如果读者还希望本书为你提供哪方面的信息,也请联系我们。我们会很重视任何读者的意见和建议,并且在以后的版本中尽量纠正错误,并且提供更丰富的信息来满足读者的要求。我们的地址和联系电话是:
美国:
O'Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
100080北京市海淀区知春路49号希格玛公寓B座809室
奥莱理软件(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至:
info@mail.oreilly.com.cn
bookquestions@oreilly.com
如果有什么技术上的问题或者注释不明白,可以发送电子邮件到:
bookquestions@oreilly.com
Google Hacks第二版的网站上有关于本书的样例、勘误表以及未来版本信息的内容。网址是:
http://www.oreilly.com/catalog/googlehks2
如果想了解与本书相关的其他信息,可以访问O'Reilly的网站:
http://www.oreilly.com
http://www.oreilly.com.cn
你有自己编写的hack了?
如果想浏览其他hack方面的书籍,或者将自己编写的hack与本书的编辑和读者共享,可以访问:
http://hacks.oreilly.com
译注1:“Google Whacking”是一种网络游戏,游戏的目标是寻找满足下列条件的搜索关键字对:对于这对关键字,Google只输出一条搜索结果。详情参见http://www.googlewhack.com。
|