使用Python访问Google

2 投票
2 回答
1451 浏览
提问于 2025-04-16 05:17

我该怎么访问谷歌呢!!

我试过这个代码

urllib.urlopen('http://www.google.com')

但是它显示的信息是 证明你是人类 或者类似的东西

有些人说试试用户代理!!我不知道!

2 个回答

1

用户代理字符串确实是个不错的选择……你可以从任何常见的浏览器中选一个有效的用户代理。在 Python 2.x 中,下面的代码应该能满足你的需求:

import urllib2
r = urllib2.Request('http://www.google.com/')
r.add_header('User-Agent', 
             'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) '
             'Gecko/20081202 Firefox (Debian-2.0.0.19-0etch1)')
html = urllib2.urlopen(r).read()

不过,unutbu 推荐使用谷歌搜索 API(如果你想进行搜索的话),这绝对是更好的方法……这样就不用处理那些麻烦的 HTML 解析了。

10

你应该使用Google API来进行搜索。这里有一个用Python的示例。Unutbu提供了一个链接,指向一个较早的回答,里面有这个示例代码的修正版本。

#!/usr/bin/python
import urllib, urllib2
import json

api_key, userip = None, None
query = {'q' : 'search google python api'}
referrer = "https://stackoverflow.com/q/3900610"

if userip:
    query.update(userip=userip)
if api_key:
    query.update(key=api_key)

url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' % (
    urllib.urlencode(query))

request = urllib2.Request(url, headers=dict(Referer=referrer))
json = json.load(urllib2.urlopen(request))

results = json['responseData']['results']
for r in results:
  print r['title'] + ": " + r['url']

撰写回答