• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> WEB开发 >> ASP开发 >> ASP应用 >> 详细内容
 

推荐文章

 
 

热点文章

  • ASP计算汉字笔画程序代码
  • 身份证查询的ASP版Ajax服务器端,不需要数据库支持
  • ASP入门教程(留言板)
  • ASP小偷程序的原理
  • 用文本+ASP打造新闻发布系统/图片上传
  • 超级留言本制作实例
  • ASP实现的日历,可以根据需要在日期上添加任何的操作
  • 利用ADODB.Stream使用浏览器下载服务器文件
  • Asp深度揭密
  • t0nsha's留言板代码
  • 无组件上传图片到数据库中,最完整解决方案
  • ASP操作Excel技术总结
 
 

相关文章

  • 国内ASP应用,不容乐观
  • 用ASP创建多栏选项列表
  • 用户状态维护
  • ASP3.0中的流控制能力
  • session的几个问题
  • 分页显示的例子(显示记录背景色替换变化)
  • 编写ASP时用JScript好还是用VBScript好?
  • 域名登记查询(whois)很复杂吗
  • LINE9的目录浏览源程序
  • 谈谈对于ASP+ PDC bits的经验
  • 浅析数据完整性问题
  • 下载文件的代码
 
 

百度搜索

 
 

使用ASP/VBS 调用Google Web APIs 开发自己的搜索引擎

  • 阅览次数:
  • 文章来源: 网海之贝
  • 原文作者: 佚名
  • 整理日期: 2006-10-03
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

[引言]
   Google在2002年的4月份发布了名为Google Web APIs的应用程序接口,该接口可以让程序员通过调用Google强大的搜索引擎数据库开发出自己的搜索引擎。Google Web APIs站点上则宣称: "With the Google Web APIs service, software developers can query more than 3 billion web documents directly from their own computer programs. Google uses the SOAP and WSDL standards so a developer can program in his or her favorite environment - such as Java, Perl, or Visual Studio .NET." 。
   在该API发布的时候,我曾经到Google上看了一下,发现该接口不错,当时把Google提供的Developer's Kit下了下来,里面只有JAVA的示例代码,由于本人对JAVA感冒,就没有继续研究下去,只是略微的看了一下接口的说明书。   后来,在国内的一个PHP站点上,看到了国内的第一个SOAP Google API for PHP 发布了,通过Google搜索了一下也没发现,国内有SOAP Google API for ASP/VBS的版本发布,最近两天刚忙完自己的事情,整理自己的文件的时候,看到角落里还有个GoogleApi的目录,捡起来又研究起来了。
   现把步骤和新的写下来,Share一下。希望MS程序员能够喜欢。~_*
   PS:我相信很多人都会同意我说Google是目前最POP的搜索引擎了。

[SOAP介绍]
   SOAP(Simple Object Access Protocol)简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议。它包括四个部分:SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例; SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;SOAP绑定(binding),使用底层协议交换信息。
   目前最新以及最流行的技术非XML莫数了,MS的OFFICE2003也发布了,据说也是基于XML开发的,具有很强的扩展性。
   关于SOAP协议规范,具体可以参照 http://www.tpoi.net/SOAP.htm
   同时IBM也提供了SOAP专题 http://www-900.ibm.com/developerWorks/cn/xml/theme/ws-soap.shtml (中文的,~_*)

  Google 搜索引擎现在可以通过基于 SOAP 的 Web 服务来访问了。这意味着,开发人员现在可以在他们自己的应用程序中嵌入 Google 搜索结果和其它信息。

[WSDL介绍]
   WSDL(Web Services Description Language)网页服务描述性语言,WDSL是一种XML语法,开发人员和开发工具可以用它来表示Web服务的功能。

[SOAP 与API]
   我简单的作了VBS的程序,通过SNIFFER PRO抓去下列数据包,以便作分析。

   Step 1 >
      发送请求数据包

      POST./search/beta2.HTTP/1.1
      User-Agent:.Mozilla/4.0.(compatible;.MSIE.6.0;.MS.Web.Services.Client.Protocol.1.0.3705.0)
      Content-Type:.text/xml;.charset=utf-8
      SOAPAction:."urn:GoogleSearchAction"
      Content-Length:.883
      Expect:.100-continue
      Connection:.Keep-Alive
      Host:.api.google.com

      API.Google.Com返回连接建立成功数据包

   Step 2 >
      发送数据包

      <?xml.version="1.0".encoding="utf-8"?>
      <soap:Envelope.xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:tns="urn:GoogleSearch"
      xmlns:types="urn:GoogleSearch/encodedTypes"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <soap:Body.soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <tns:doGoogleSearch>
      <key.xsi:type="xsd:string">fewCIPdQFHIhHaO+vWpBTjlblc6ajHKN</key>
      <q.xsi:type="xsd:string">............</q>
      <start.xsi:type="xsd:int">0</start>
      <maxResults.xsi:type="xsd:int">1</maxResults>
      <filter.xsi:type="xsd:boolean">false</filter>
      <restrict.xsi:type="xsd:string"./>
      <safeSearch.xsi:type="xsd:boolean">false</safeSearch>
      <lr.xsi:type="xsd:string"./><ie.xsi:type="xsd:string"./><oe.xsi:type="xsd:string"./>
      </tns:doGoogleSearch></soap:Body></soap:Envelope>
      
       API.Google.Com返回数据包

       HTTP/1.1.100.Continue....

    Step 3 >
       发送数据包

      <?xml.version="1.0".encoding="utf-8"?>
      <soap:Envelope.xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:tns="urn:GoogleSearch"
      xmlns:types="urn:GoogleSearch/encodedTypes"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <soap:Body.soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <tns:doGoogleSearch>
      <key.xsi:type="xsd:string">fewCIPdQFHIhHaO+vWpBTjlblc6ajHKN</key>
      <q.xsi:type="xsd:string">............</q>
      <start.xsi:type="xsd:int">0</start>
      <maxResults.xsi:type="xsd:int">1</maxResults>
      <filter.xsi:type="xsd:boolean">false</filter>
      <restrict.xsi:type="xsd:string"./>
      <safeSearch.xsi:type="xsd:boolean">false</safeSearch>
      <lr.xsi:type="xsd:string"./><ie.xsi:type="xsd:string"./>
      <oe.xsi:type="xsd:string"./>
      </tns:doGoogleSearch></soap:Body></soap:Envelope>

      API.Google.com返回数据包
      HTTP/1.1.200.OK
      Date:.Sun,.16.Mar.2003.20:25:26.GMT
      Server:.e.h.c.a.p.a
      Content-Length:.2046
      Keep-Alive:.timeout=10,.max=50
      Connection:.Keep-Alive
      Content-Type:.text/xml;.charset=utf-8
      <?xml.version='1.0'.encoding='UTF-8'?>
      <SOAP-ENV:Envelope.xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
      xmlns:xsd="http://www.w3.org/1999/XMLSchema">
      <SOAP-ENV:Body>
      <ns1:doGoogleSearchResponse
      xmlns:ns1="urn:GoogleSearch"
      SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <return.xsi:type="ns1:GoogleSearchResult">
      <documentFiltering.xsi:type="xsd:boolean">false</documentFiltering>
      <estimatedTotalResultsCount.xsi:type="xsd:int">313</estimatedTotalResultsCount>
      <directoryCategories.xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/"
      xsi:type="ns2:Array"
      ns2:arrayType="ns1:DirectoryCategory[0]">
      </directoryCategories>
      <searchTime.xsi:type="xsd:double">0.057075</searchTime>
      <resultElements.xmlns:ns3="http://schemas.xmlsoap.org/soap/encoding/"
      xsi:type="ns3:Array"
      ns3:arrayType="ns1:ResultElement[1]">
      <item.xsi:type="ns1:ResultElement">
      <cachedSize.xsi:type="xsd:string">1k</cachedSize>
      <hostName.xsi:type="xsd:string"></hostName>
      <snippet.xsi:type="xsd:string"></snippet>
      <directoryCategory.xsi:type="ns1:DirectoryCategory">
      <specialEncoding.xsi:type="xsd:string"></specialEncoding>
      <fullViewableName xsi:type="xsd:string">
      </fullViewableName>
      </directoryCategory>
      <relatedInformationPresent.xsi:type="xsd:boolean">true</relatedInformationPresent>
      <directoryTitle.xsi:type="xsd:string"></directoryTitle>
      <summary.xsi:type="xsd:string"></summary>
      <URL.xsi:type="xsd:string">http://www.roror.org/</URL>
      

<title.xsi:type="xsd:string">Your.browser.does.not.support.frames..We.recommend.upgrading.your.<b>...</b>.</title>
      </item></resultElements>
      <endIndex.xsi:type="xsd:int">1</endIndex>
      <searchTips.xsi:type="xsd:string"></searchTips>
      <searchComments.xsi:type="xsd:string"></searchComments>
      <startIndex.xsi:type="xsd:int">1</startIndex>
      <estimateIsExact.xsi:type="xsd:boolean">false</estimateIsExact>
      <searchQuery.xsi:type="xsd:string">............</searchQuery>
      </return>.</ns1:doGoogleSearchResponse>
      </SOAP-ENV:Body>.</SOAP-ENV:Envelope>.

   ~_* 抓包就贴到这里,相信有些同志应该已经能看见一些端倪了吧。大家可以去看一下下面的URL,相信就知道上面的东东返回的是啥搜索结果了。
http://www.google.com/search?q=%E9%9B%A8%E5%A3%B0%E8%AE%BA%E5%9D%9B&ie=UTF-8&oe=UTF-8&hl=zh-CN&lr=

上面URL的第一条搜索记录
Your browser does not support frames. We recommend upgrading your ...
www.roror.org/ - 1k - 2003年3月15日 - 网页快照 - 类似网页

[ASP/VBS 程序的实现]
    首先通过下面的URL申请一个Google Web APIs的序列号:
https://www.google.com/accounts/NewAccount?continue=http://api.google.com/createkey&followup=http://api.google.com/createkey
    填写完Email地址和Password以后,提交表单,然后到邮箱收一下Mail,激活账号,接着就能收到Licence了。

    Your Google Web APIs license key is fewCIPdQFHIhHaO+vWpBTjlblc6ajHKN(这就是Licence了) 。

    然后安装SOAP组件,本文所提到的SOAP组件使用的是http://www.pocketsoap.com/ 发布的PocketSOAP v1.4.2(released February 8, 2003)。
    下载URL如下:
    Win32 Version v1.4.2 Packaged Install      http://www.pocketsoap.com/pocketsoap/PocketSOAP.1.4.2.exe
    注:Win95用户需要先安装DCOM95,Win95/98用户另外需要安装SSL支持。Dcom95相关URL
http://www.microsoft.com/com/dcom/dcom95/dcom1_3.asp
    我使用的是Win2k Adv Server,就不需要那么麻烦了。先运行下载的PocketSOAP进行安装。
安装完成以后,就可以编写代码了。

    为了调试的方便,我使用VBS进行编写,ASP和VBS本来就如出一辙,稍加修改就可以放到WEB上了。

    代码如下,把下面代码复制保存到google.vbs,然后运行Cscript google.vb 关键字 就可以了。

 

Dim oArgs, ArgNum, t, key, searchRes

Set oArgs = WScript.Arguments
ArgNum = 0

While ArgNum < oArgs.Count
  FullParameter = FullParameter + oArgs(ArgNum) + " "
  ArgNum = ArgNum + 1
Wend

'填写为自己申请到的Licence就可以了
key = "fewCIPdQFHIhHaO+vWpBTjlblc6ajHKN"

set t = CreateObject("pocketsOAP.HTTPTransport")
't.SetProxy "localhost", 7070 '设置Proxy

set res = GoogleSearch ( FullParameter, 0, 10, true, "", true, "", "", "" )
WScript.Echo String(80, "_")
Wscript.Echo "已向英特网搜索" & FullParameter
Wscript.Echo "共约有" & res.ItemByName("estimatedTotalResultsCount").Value & "项查询结果"
Wscript.Echo "搜索结果如下:"
WScript.Echo String(80, "_")
searchRes = res.ItemByName("resultElements").Value
for i = lbound(searchRes) to ubound(searchRes)
    wscript.echo searchRes(i).Nodes.ItemByName("title").Value & vbCRLF & vbTab & _
searchRes(i).Nodes.ItemByName("URL").Value &

vbCRLF
next

Function GoogleSearch ( searchTerm, _
                        start, _
                        maxResults, _
                        MatchFilter, _
                        restrict, _
                        safeSearch, _
                        languageRestrict, _
                        inputEncoding, _
                        outputEncoding )
    dim e
    set e = CreateObject("PocketSOAP.Envelope.2")
    e.SetMethod "doGoogleSearch", "urn:GoogleSearch"

    e.Parameters.Create "key", key
    e.Parameters.Create "q", searchTerm
    e.Parameters.Create "start", start
    e.Parameters.Create "maxResults", maxResults
    e.Parameters.Create "filter", MatchFilter
    e.Parameters.Create "restrict", restrict
    e.Parameters.Create "safeSearch", safeSearch
    e.Parameters.Create "lr", languageRestrict
    e.Parameters.Create "ie", inputEncoding
    e.Parameters.Create "oe", outputEncoding
    
    
    t.SOAPAction = "urn:GoogleSearchAction"
    
    t.send "http://api.google.com/search/beta2", e.serialize
    e.parse t
    set GoogleSearch = e.parameters.item(0).Nodes
end Function



[Google Web APIs 介绍]
   每个Goolge 账号和Licence Key一天只能自动查询1000次,每次最多返回 10 条搜索结果。因此,请求可以找到编号在 990 到 1000 之间的结果,但找不到第 1001 个。使用之前,请仔细阅读Google的服务条款(PERSONAL AND LEGITIMATE USES ONLY)。
   
   搜索请求

   搜索请求提交一个查询字符串和一组参量到Google Web APIs 服务,然后收到一组搜索结果。搜索结果是由超过20亿Web页面索引而来。

   Cache请求

    Cache请求提交一个URL到Google Web APIs 服务,然后收到Google's crawlers最后访问的页面(如果可以提供)。Cache页面的返回类型是Base64编码格式的文本。

   拼写建议

   Google 搜索引擎意识到用户通常并不知道如何拼写要找的主题,所以内置一个拼写检查器,它可以分析查询、提出建议。不论什么样的搜索,都会有这样的拼写建议。

具体介绍请参阅 http://www.tpoi.net/APIs_Reference.html
或者在 http://www.google.com/apis/download.html 下载一份Google Web APIs Developer's Kit 。

上一篇:Asp深度揭密
下一篇:构建支持Master/Slave读写分离的数据库操作类
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号