"""Search Google from the command line
This program is part of "Dive Into Python", a free Python book for
experienced programmers. Visit http://diveintopython.org/ for the
latest version.
"""
__author__ = "Mark Pilgrim (mark@diveintopython.org)"
__version__ = "$Revision: 1.2 $"
__date__ = "$Date: 2004/05/20 18:53:59 $"
__copyright__ = "Copyright (c) 2004 Mark Pilgrim"
__license__ = "Python"
from SOAPpy import WSDL
#导入WSDL类
# you'll need to configure these two values;
# see http://www.google.com/apis/
WSDLFILE = 'http://www.google.com/apis/'
%你要搜索的网址
APIKEY = 'YOUR_GOOGLE_API_KEY'
%你注册 Google 网络服务时获得的 Google API 许可证
_server = WSDL.Proxy(WSDLFILE)
%调用WSDL的Proxy函数搜索WSDLFILE
%定义一个搜索的函数
%q为你要搜索的词或词组
def search(q):
"""Search Google and return list of {title, link, description}"""
results = _server.doGoogleSearch(
APIKEY, q, 0, 10, False, "", False, "", "utf-8", "utf-8")
%调用doGoogleSearch函数,注意此函数有10个参数!
各参数的含义如下:
-
- key――你注册 Google 网络服务时获得的 Google API 许可证。
- q――你要搜索的词或词组。其语法与 Google 的网站表单处完全相同,你所知道的高级搜索语法和技巧这里完全适用。
- start――起始的结果编号。与使用 Google 网页交互搜索时相同,这个函数每次返回 10 个结果。如果你需要查看 “第二” 页结果则需要将 start 设置为 10。
- maxResults――返回的结果个数。目前的值是 10,当然如果你只对少数返回结果感兴趣或者希望节省网络带宽,也可以定义为返回更少的结果。
- filter――如果设置为 True,Google 将会过滤结果中重复的页面。
- restrict――这里设置 country 并跟上一个国家代码可以限定只返回特定国家的结果。例如:countryUK 用于在英国搜索页面。你也可以设定 linux,mac 或者bsd 以便搜索 Google 定义的技术站点组,或者设为 unclesam 来搜索美国政府站点。
- safeSearch――如果设置为 True,Google 将会过滤掉色情站点。
- lr (“language restrict”,语言限制)――这里设置语言限定值返回特定语言的站点。
- ie 和 oe (“input encoding”,输入编码和 “output encoding”,输出编码)――不赞成使用,都应该是 utf-8。
return [{"title": r.title.encode("utf-8"),
"link": r.URL.encode("utf-8"),
"description": r.snippet.encode("utf-8")}
for r in results.resultElements]
%对于每一个返回结果,返回该结果的标题、url、描述
if __name__ == '__main__':
import sys
for r in search(sys.argv[1])[:5]:
print r['title']
print r['link']
print r['description']
%调用自定义的search函数将sys的第一个参数作为搜索的关键词,返回所有的结果