XE3随笔18:实例 - 解析 Google 关键字搜索排名
同上例类似, 通过 'http://clients1.google.cn/complete/search?&q=' + "关键字" 可以获取 Google 的关键字搜索排名.
我用 Delphi 为关键字得到的结果是:
window.google.ac.h(
["Delphi",[
["delphi 教程", "375,000 结果", "0"],
["delphi盒子", "74,900 结果", "1"],
["delphi 下载", "1,580,000 结果", "2"],
["delphi7 下载", "1,600,000 结果", "3"],
["delphi是什么", "497,000 结果", "4"],
["delphi 字符串函数", "352,000 结果", "5"],
["delphi7 序列号", "302,000 结果", "6"],
["delphi2009下载", "20,600 结果", "7"],
["delphi7", "1,330,000 结果","8"],
["delphi2009正式版下载", "5,710 结果", "9"]
]
]
)
上面结果以 window.google.ac.h(...) 的形式给出, 下面的操作关键就是给 ISuperObject 一个名为 "window.google.ac.h" 的方法, 并指向自定义的过程, 并在过程中完成解析.
运行效果图:

代码文件:
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; type
TForm1 = class(TForm)
Memo1: TMemo;
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
end; var
Form1: TForm1; implementation {$R *.dfm} uses MsXML, SuperObject; function ToUTF8Encode(str: string): string;
var
b: Byte;
begin
for b in BytesOf(UTF8Encode(str)) do
Result := Format('%s%s%.2x', [Result, '%', b]);
end; procedure Proc(const This, Params: ISuperObject; var Result: ISuperObject);
var
jo: ISuperObject;
begin
Form1.Memo1.Clear;
for jo in Params['1'] do with Form1.Memo1.Lines do
Form1.Memo1.Lines.Add(jo.format('%2%: %0% - %1%'));
end; procedure TForm1.Button1Click(Sender: TObject);
const
u = 'http://clients1.google.cn/complete/search?&q=';
var
jo: ISuperObject;
req: IXMLHTTPRequest;
url: WideString;
begin
jo := SO;
jo.M['window.google.ac.h'] := @Proc; url := u + ToUTF8Encode(Edit1.Text); req := CoXMLHTTP.Create;
req.open('Get', url, False, EmptyParam, EmptyParam);
req.send(EmptyParam); jo[req.responseText];
end; end.
XE3随笔18:实例 - 解析 Google 关键字搜索排名的更多相关文章
- XE3随笔17:实例 - 模拟 Google 搜索
本例测试效果图: 代码文件: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics ...
- C语言实例解析精粹学习笔记——18
<C语言实例解析精粹>中编译环境采用的是Turbo C 2.0.但是这个编译器年代久远,较新的编译器对书中的某些例子支持不好,在学习的时候同时做一些笔记. 实例18:将一个无符号整数转换为 ...
- [Reprint] C++函数模板与类模板实例解析
这篇文章主要介绍了C++函数模板与类模板,需要的朋友可以参考下 本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解.具体内容如下: 泛型编程( ...
- synchronized互斥锁实例解析
目录 synchronized互斥锁实例解析 1.互斥锁基础使用:防止多个线程同时访问对象的synchronized方法. 1.1.多个线程调用同一个方法 1.2.多个线程多个锁,升级为类锁 2.线程 ...
- google垂直搜索结果
佰年金融 所谓“垂直”很干净地分离出来,而不是在谷歌算作有机列表的结果,但该行已开始模糊.例如,现在许多视频结果似乎是直接整合为有机(万SERP的例子).我治疗的新的“有深度的文章”作为一个垂直的结果 ...
- Google高级搜索语法
Google高级搜索语法 Google搜索果真是一个强悍的不得了的搜索引擎,今天转了一些 google的高级搜索语法 希望能帮助到大家. 一.allinanchor: anchor是一处说明性的文 ...
- Google 黑客搜索技巧
常用的google关键字: foo1 foo2 (也就是关联,比如搜索xx公司 xx美女) operatorfoo filetype123 类型 sitefoo.com 相对直接看网站更有意思,可以得 ...
- 如何使用GOOGLE高级搜索技巧
如何使用GOOGLE高级搜索技巧 一,GOOGLE简介 Google(www.google.com)是一个搜索引擎,由两个斯坦福大学博士生Larry Page与Sergey Brin于1998年9月发 ...
- 如何正大光明的使用 google 进行搜索
对于程序猿来说,不能使用google,是一大痛所在,今天在使用 百度网盘 搜索时,突然发现 ,他能同时使用 baidu和 google进行搜索,于是想到了这个正大光明的使用google 的方法,不需要 ...
随机推荐
- Struts2框架之-注解开发
Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action类中每个方法的绑定这是重点,在这里先简单看一下配置文件中的简单配置: <span style=" ...
- js中各种事件的兼容性
1给元素绑定一个事件 ie8attachEvent(on+"事件",event); 高级浏览器 addEventListener("事件",event,fals ...
- 《CoffeeScript应用开发》学习: CoffeeScript高级用法
正确的上下文 使用胖箭头=>表示将回调函数绑定到this对象. class t func: (callback)-> if callback? setTimeout callback(), ...
- HTTP权威协议笔记-5.Web服务器
5.1 Web服务器工作内容 建立连接--接受一个客户端的连接,或者将其拒绝 接受请求--从网络中读取一条HTTP报文 处理请求--对请求报文进行解释,并采取行动 访问资源--访问报文中指定的资源 构 ...
- solr清空全部索引
http://blog.csdn.net/qing419925094/article/details/42142117
- js面向对象笔记
JavaScript 私有成员实现 到此为止,如果您任然对 JavaScript 面向对象持怀疑态度,那么这个怀疑一定是,JavaScript 没有实现面向对象中的信息隐藏,即私有和公有.与其他类式面 ...
- sql搜索like通配符的用法详解
http://www.lmwlove.com/ac/ID878 有很多朋友写了几年的like搜索,可能对like后面通配符的用法都不了解,甚至于%的作用是什么都不清楚.在这篇文章中,我们就一起来学习一 ...
- Linux守护进程
什么是守护进程? 守护进程是生存期长的一种进程,它们常常在系统引导装入时启动,仅在系统关闭时在终止.它们没有控制终端并且在后台运行.Linux 系统中有很多守护进程用以执行系统的日常事物,而且服务器程 ...
- win8 VB6打开提示MSCOMCTL.ocx未注册
从xp上复制相应的文件到win8相应的位置,如果是不可以,win8中反注册此控件,再注册此控件
- php如何获取当前时间
$nowtime=date('Y-m-d'); 这样取出来的值默认为当天的零点,对于做一些数据统计的sql查询比较有用