from:http://www.snowhack.com/blog/catalog.asp?cate=10
必备参数
☆ q–查询的关键词(Query),百度对应的参数为wd
☆ hl–Google搜索的界面语言(Interface Language)
常用的有:
hl=zh-CN 简体中文语言界面,我们用的Google中文就是这个参数。
hl=zh-TW 繁体中文语言界面,港台地区常使用
hl=en 英文语言界面
☆start–显示结果的页数,百度对应的参数为pn
可选参数
☆ lr–搜索内容的语言限定(Language Restrict),限定只搜索某种语言的网页。如果lr参数为空,则为搜索所有网页。
常用的有:
lr=lang_zh-CN 只搜索简体中文网页
lr=lang_zh-TW 只搜索繁体中文网页
lr=lang_zh-CN|lang_zh-TW 搜索所有中文网页
lr=lang_en 只搜索英文网页
☆ ie–查询输入文字的编码(Input Encoding),Google缺省设置ie=utf-8,即请求Google搜索时参数q的值是一段utf-8编码的文字,如果要直接使用中文,可以设置ie=gb2312,即为简体中文编码
☆ oe–搜索返回页面的编码(Output Encoding),Google缺省设置oe=utf-8
☆ num–搜索结果显示条数(Number),取值范围在10–100条之间,缺省设置num=10,百度对应的参数为rn N5yZ?ex1
☆ newwindow–是否开启新窗口以显示查询结果。 缺省设置newwindow=1,在新窗口打开网页
☆ safe–安全搜索选项(SafeSearch),设置该参数可以过滤成人内容, 缺省设置safe为空,即不过滤成人内容,设置为safe=vss,即过滤成人内容。
Google网页搜索结果页面结构
和百度的很相似,按源代码结构自上而下为:
搜索框
赞助商链接
搜索结果
分页区
相关搜索
底部搜索框
版权区
其中“搜索结果、分页区”这两部分就是我们需要的有效数据。
Google反采集的手段相对多一些。
a、和百度一样,Google的结果页面代码也常常发生变化,有时在页面局部会出现动态的代码改变,所以要经常观察Google代码变化,根据实际情况改变相关的字符串标识。
b、Google反采集的主要手段就是暂时屏蔽用户IP,当一个用户频繁采集Google数据时,Google就会暂时屏蔽该用户的IP,导致用户无法访问Google,一般隔几分钟就会自己解除屏蔽。如何突破这种限制,在上面的代码中用到的是轮询服务器的方法,就是在几个Google服务器中轮换着查询,利用这中间的时间差克服屏蔽现象。但也有不少问题,比如,轮询多个服务器会导致查询时间过长,而且,我发现有时多个服务器同时进行屏蔽,所以,还要多尝试几个服务器地址,尽量保证它们之间没有多少关联性。
除了这种轮询的方法,还可以使用模拟http请求头的方法,我估计google这种屏蔽手法可能主要靠分析http请求头的数据判断是否为采集行为。可以利用xmlhttp的setrequestheader方法发送模拟的请求头信息,比如:http.setrequestheader \"referer\",\http://so.163.com\,模拟为163的搜索请求.