薅Google图片搜索羊毛 之API集成

文摘   2024-11-22 11:50   湖北  

你是否想过为自己的网站添加强大的Google图片搜索功能?今天就让我们一起来看看如何使用Google Custom Search JSON API来实现这个目标!

一、什么是Custom Search JSON API?

Google Custom Search JSON API是Google提供的一项强大服务,它允许开发者以程序化的方式在自己的应用中检索和显示Google搜索结果。通过这个API,我们可以:

  • 执行网页搜索
  • 进行图片搜索
  • 获取JSON格式的结果
  • 自定义搜索范围和选项

最棒的是,Google每天会免费提供100次搜索查询配额,对于个人网站来说完全够用了!

二、前期准备工作

在开始编码之前,我们需要准备以下内容:

地址 https://developers.google.com/custom-search/v1/overview?hl=zh-cn

  • 创建一个可编程搜索引擎(Programmable Search Engine)
  • 获取搜索引擎ID(cx)
  • 申请API密钥(API Key)

💡 小贴士:访问Google可编程搜索引擎控制台即可完成前两步,API密钥则需要在Google Cloud Console中创建。

三、具体实现步骤

1. 搭建服务器端

首先,我们使用Node.js + Koa框架搭建一个简单的服务器。以下是完整的服务器端代码:

const Koa = require('koa');
const Router = require('koa-router');
const cors = require('@koa/cors');
const serve = require('koa-static');
const axios = require('axios');
const path = require('path');

const app = new Koa();
const router = new Router();

// 启用跨域支持
app.use(cors());

// 配置静态文件服务
app.use(serve(path.join(__dirname, 'public')));

// 搜索API路由
router.get('/api/search', async (ctx) => {
    const { query, page = 1, pageSize = 10 } = ctx.query;
    const API_KEY = "你的API密钥";
    const SEARCH_ENGINE_ID = "你的搜索引擎ID";

    try {
        const start = ((parseInt(page) - 1) * parseInt(pageSize)) + 1;
        const url = `https://www.googleapis.com/customsearch/v1?key=${API_KEY}&cx=${SEARCH_ENGINE_ID}&q=${encodeURIComponent(query)}&searchType=image&num=${pageSize}&start=${start}`;
        
        const response = await axios.get(url);
        
        ctx.body = {
            items: response.data.items || [],
            totalResults: parseInt(response.data.searchInformation.totalResults),
            currentPage: parseInt(page),
            pageSize: parseInt(pageSize)
        };
    } catch (error) {
        ctx.status = error.response?.status || 500;
        ctx.body = { error: error.message };
    }
});

app.use(router.routes()).use(router.allowedMethods());

// 启动服务器
const PORT = process.env.PORT || 3002;
app.listen(PORT, () => {
    console.log(`Server running on http://localhost:${PORT}`);
});

四、使用注意事项

  • 每天免费100次查询
  • 付费用户每天最多10000次查询
  • 每1000次查询收费5美元


字节笔记本
专注于科技领域的分享,AIGC,全栈开发,产品运营
 最新文章