You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Python的高级谷歌搜索:选择题答案验证实现咨询

嘿,这个需求挺实用的!我来给你拆解下具体怎么实现,分几个核心步骤来,代码示例也给你准备好了:

核心实现思路

整个功能可以拆成解析输入、搜索统计、结果整合三个大环节,每个环节都有需要注意的细节:

一、先搞定搜索API的问题

直接爬谷歌网页很容易被反爬机制拦截,而且解析HTML也麻烦,最稳妥的方式是用Google Custom Search API。你需要先去谷歌云平台申请API密钥,再创建一个自定义搜索引擎(可以设置搜索整个网页),拿到这两个参数后就能合法调用接口了。免费版有一定的调用配额,足够小项目用,超出的话可以付费扩容。

二、解析题目和选项

首先得把用户输入的内容拆成「题目文本」和「三个选项」。如果是结构化输入(比如用户明确按格式提交),直接提取就行;如果是非结构化的,可能需要用正则或者简单的字符串处理来拆分,比如匹配选项的前缀(A/B/C、1/2/3之类的)。

三、两种搜索统计方式的实现

1. 搜索题目本身,统计选项出现频次

  • 调用API获取题目搜索结果的标题和摘要文本
  • 把所有文本转成小写(避免大小写敏感的问题),然后用正则的精确匹配(比如\b选项文本\b)来统计每个选项出现的次数
  • 这里要注意,别用简单的字符串包含,不然会把类似“苹果树”里的“苹果”也算进去,精确匹配更准确

2. 搜索题目+选项的组合,对比结果数量

  • 对每个选项,构造精确匹配的搜索词:"题目内容" "选项内容"(加双引号让谷歌做精确匹配)
  • 调用API后,提取返回结果里的totalResults字段,这个就是该组合的搜索结果总数
  • 结果数越多,说明这个选项和题目绑定的关联性越强,大概率是正确答案

四、整合结果输出结论

把两种统计方式的结果结合起来:

  • 如果频次最高的选项和组合搜索结果最多的选项一致,那可信度很高
  • 如果不一致,优先参考组合搜索的结果,因为精确匹配的关联性更直接

代码示例(Python)

先安装依赖:

pip install requests

然后是核心代码:

import requests
import re

# 替换成你自己的API密钥和自定义搜索引擎ID
API_KEY = "your_api_key_here"
SEARCH_ENGINE_ID = "your_search_engine_id_here"

def get_search_total(query):
    """获取搜索结果总数"""
    url = f"https://www.googleapis.com/customsearch/v1?key={API_KEY}&cx={SEARCH_ENGINE_ID}&q={query}"
    try:
        response = requests.get(url, timeout=10)
        response.raise_for_status()
        data = response.json()
        return int(data.get('searchInformation', {}).get('totalResults', 0))
    except Exception as e:
        print(f"搜索出错:{e}")
        return 0

def count_option_in_results(question, options):
    """统计选项在题目搜索结果中的出现频次"""
    url = f"https://www.googleapis.com/customsearch/v1?key={API_KEY}&cx={SEARCH_ENGINE_ID}&q={question}"
    counts = {opt: 0 for opt in options}
    try:
        response = requests.get(url, timeout=10)
        response.raise_for_status()
        data = response.json()
        # 遍历所有搜索结果的标题和摘要
        for item in data.get('items', []):
            text = f"{item.get('title', '')} {item.get('snippet', '')}".lower()
            for opt in options:
                # 精确匹配选项,避免部分匹配
                pattern = re.compile(rf"\b{re.escape(opt.lower())}\b")
                counts[opt] += len(pattern.findall(text))
    except Exception as e:
        print(f"统计频次出错:{e}")
    return counts

# 示例使用
if __name__ == "__main__":
    # 假设输入的题目和选项
    question = "以下哪种动物属于哺乳动物?"
    options = ["鸡", "猫", "蛇"]

    # 统计选项出现频次
    occurrence_counts = count_option_in_results(question, options)
    print("选项在搜索结果中的出现频次:")
    for opt, cnt in occurrence_counts.items():
        print(f"- {opt}: {cnt}次")

    # 统计题目+选项组合的搜索结果数
    combo_counts = {}
    for opt in options:
        combo_query = f'"{question}" "{opt}"'
        combo_counts[opt] = get_search_total(combo_query)
    print("\n题目+选项组合的搜索结果数:")
    for opt, cnt in combo_counts.items():
        print(f"- {opt}: {cnt}条")

    # 综合判断
    top_occurrence = max(occurrence_counts, key=occurrence_counts.get)
    top_combo = max(combo_counts, key=combo_counts.get)

    if top_occurrence == top_combo:
        print(f"\n最可能的正确答案:{top_occurrence}(频次和组合搜索结果均排名第一)")
    else:
        print(f"\n频次最高选项:{top_occurrence},组合搜索结果最多选项:{top_combo},建议优先参考组合搜索结果")

一些注意事项

  • API配额:Google Custom Search API免费版每天有100次调用额度,超出会报错,记得监控配额
  • 异常处理:代码里加了超时和异常捕获,避免因为网络问题或者API返回错误导致程序崩溃
  • 搜索词优化:如果题目里有特殊符号或者无关关键词,可以先做清洗,比如去掉标点、冗余的语气词,提升搜索准确性

内容的提问来源于stack exchange,提问作者Aryan Sawhney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:45:48