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

googlesearch模块重复返回相同结果,如何修复?

问题

运行googlesearch模块时,多次调用始终返回相同结果,但需求是每次调用能获取不同的搜索结果。已尝试修改num、stop参数,使用break、enumerate等方法,均未解决问题。查阅网络及PyPi相关文档也未找到有效方案,附上代码寻求技术建议:

count = 0
now = datetime.now()

current_time = now.strftime("%H:%M:%S")
    
def Gsearch(searchQuery): #global count fixed counter, result is still returning the same thing
    global current_time
    global count
    count += 1
    try :
        
        import googlesearch
        for i in googlesearch.search(query=searchQuery,tld="com",lang="en",num=10,stop=10,pause=2):
            print ("(" + current_time + ")")
            print (count)
            print(i + "\n")
            gs = Gsearch(searchQuery)
            gs.Gsearch()
            
    except ImportError:
        print("No module named 'google' found. To install, type 'pip install google' into cmd.")
解决方案

你的代码存在几个核心问题,导致重复返回相同结果:

  1. 递归调用逻辑错误:在for循环内重复调用Gsearch(searchQuery),还错误尝试调用gs.Gsearch()(Gsearch是函数而非类),导致函数反复执行但始终处理同一批初始结果。
  2. 模块导入位置不合理:将import googlesearch放在函数内部,每次调用都重复导入,既浪费性能也无必要。
  3. 时间变量未实时更新:current_time仅在脚本启动时赋值一次,后续调用不会刷新时间。
  4. 缺少结果偏移逻辑:googlesearch.search默认从第一页取结果,未设置偏移参数的话,每次调用都只会获取前10条,自然重复。

针对这些问题,修正后的代码如下:

import datetime
from googlesearch import search

count = 0

def Gsearch(search_query, start_page=0):
    global count
    count += 1
    # 实时获取当前时间
    current_time = datetime.datetime.now().strftime("%H:%M:%S")
    try:
        # 通过start参数控制结果偏移,实现翻页获取不同内容
        # num=10为每页条数,start=start_page*10表示从第N页开始加载
        for result in search(
            query=search_query,
            tld="com",
            lang="en",
            num=10,
            stop=10,
            pause=2,
            start=start_page * 10
        ):
            print(f"({current_time})")
            print(count)
            print(result + "\n")
    except ImportError:
        print("找不到'google'模块,请执行命令安装:pip install google")

# 示例调用:依次获取第1页、第2页的结果
Gsearch("your search keyword", start_page=0)
Gsearch("your search keyword", start_page=1)

关键修改说明:

  • 将模块导入移到全局作用域,避免重复导入
  • 每次调用函数时实时生成当前时间
  • 新增start_page参数,通过start=start_page*10控制结果偏移,实现翻页获取不同结果
  • 移除错误的递归调用,避免逻辑混乱和死循环

额外注意:Google搜索本身存在缓存机制,短时间内多次搜索相同关键词,即使翻页也可能出现部分重复结果。建议适当延长pause时间,或在关键词允许的情况下加入动态变化参数(如当前日期)来减少重复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:50:17