百度在搜索上跟google还是有很大差距的,尤其是google支持很多搜索语法,非常强大。所以这里这里写了个简单的获取google搜索结果的脚本。但是google做了防爬取限制,使用一般的正则匹配是不行的,这里用的是google的ajax的接口,但是使用起来还是有些问题,没有完全解决。

获取google搜索结果的Python代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#! /usr/bin/env python
#coding=utf-8
import urllib2,urllib
import msvcrt
import simplejson
import sys

def CatchURL(key,num):#抓取链接
url = ('https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=%s&rsz=8&start=%s') % (key,num)
try:
request = urllib2.Request(url)
response = urllib2.urlopen(request)
results = simplejson.load(response)
URLinfo = results['responseData']['results']
except Exception,e:
print e
else:
for info in URLinfo:
result.append(info['url'])

def RemoveRepeat(List):#列表去重
New_List = []
for i in List:
if i not in New_List:
New_List.append(i)
return New_List

def save(List):
f = open("result","w")
for i in List:
f.write(i+"\n")
f.close()

if __name__ == '__main__':
searchstr = raw_input()
pagenum = input()
result = []
for i in range(1,pagenum+1):
CatchURL(searchstr,i)
result = RemoveRepeat(result)
save(result)
print "DONE!"

运行程序,第一行输入搜索的内容,第二行输入搜索的页数,然后会在程序同目录下生成result文件,里面是获取并且去重后的url,但是程序运行的时候可能会出现如下的情况.

获取Google搜索结果的Py脚本-老D

那是因为google检测到非正常的请求,导致无法获取搜索结果,暂时未能解决。