以下是一篇关于使用Google Custom Search JSON API进行搜索的简明技术指南:
利用Google Custom Search API实现搜索功能
Google Custom Search JSON API允许开发者将谷歌搜索功能集成到应用程序中。本指南将介绍其核心用法及代码实现。
一、API准备工作
1. 创建项目并启用API
– 访问[Google Cloud Console](https://console.cloud.google.com/),创建新项目。
– 在库中搜索并启用”Custom Search JSON API”。
2. 获取凭证
– 在”凭据”页面创建API密钥。
– 记录生成的密钥(如AIzaSyBx3…)。
3. 创建搜索引擎
– 访问[Programmable Search Engine](https://programmablesearchengine.google.com/)。
– 指定搜索范围(全网或特定站点),获得搜索引擎ID(如123456:abcdef)。
二、API请求基础
请求URL结构:
python
https://www.googleapis.com/customsearch/v1?key=API_KEY&cx=ENGINE_ID&q=QUERY
必需参数:
– key: API密钥
– cx: 搜索引擎ID
– q: 搜索关键词
可选参数:
– num: 每页结果数(1-10)
– start: 分页起始索引
– dateRestrict: 日期过滤(如m3最近三月)
三、Python实现示例
python
import requests
API_KEY = “your_api_key”
SE_ID = “your_search_engine_id”
def google_search(query, num=10, start=1):
url = “https://www.googleapis.com/customsearch/v1”
params = {
“key”: API_KEY,
“cx”: SE_ID,
“q”: query,
“num”: num,
“start”: start
}
try:
response = requests.get(url, params=params)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f”Error: {e}”)
return None
使用示例
results = google_search(“人工智能发展”)
if results:
for item in results.get(“items”, []):
print(f”标题:{item[‘title’]}”)
print(f”链接:{item[‘link’]}n”)
四、处理搜索结果
典型响应结构:
json
{
“items”: [
{
“title”: “结果标题”,
“link”: “URL链接”,
“snippet”: “内容摘要”,
“pagemap”: { // 结构化数据(如果有)
“metatags”: [
{“og:description”: “…”}
]
}
}
],
“queries”: {
“nextPage”: [{“startIndex”: 11}] // 分页信息
}
}
五、高级技巧
1. 分页处理
python
def paginated_search(query, total=30):
all_results = []
max_pages = total // 10
for page in range(max_pages):
start = page 10 + 1
results = google_search(query, start=start)
if not results:
break
all_results.extend(results.get(“items”, []))
return all_results
2. 结果过滤
python
按域名过滤
filtered = [item for item in results[“items”]
if “example.com” in item[“link”]]
按日期排序(需启用排序参数)
params = {“sort”: “date:r:20250101:20251231″}
六、注意事项
1. 配额限制
– 免费版:每日100次请求
– 超额需在Cloud Console调整配额
2. 合规要求
– 禁止隐藏API凭证
– 需在搜索结果中标注”Powered by Google”
– 遵守 robots.txt 规则
3. 错误处理
– 429错误:请求过频,需添加重试机制
– 403错误:检查API密钥和权限设置
七、替代方案
对于需要大规模抓取的情况,可结合:
– 官方爬虫规范(需申请许可)
– 第三方解析库(如BeautifulSoup)
– 代理轮换机制(防范IP封禁)
通过合理使用API,开发者可以高效集成谷歌搜索功能,但需始终遵守服务条款。建议优先使用官方API,并定期查看[官方文档](https://developers.google.com/custom-search/v1/overview)获取最新规范。