快速在多个搜索引擎下搜索同一关键词

启用 ohmyzsh 的插件 web-search,可以在终端下使用 bing, google, baidu 来打开浏浏器然后搜索东西,但是不够好用。

于是写了个脚本,实现在多个搜索引擎下搜索相同关键词。

无论是在终端下搜索还是在运行窗口下搜索,都会打开新的浏览器窗口,所有页面都在同一窗口下,且整个过程不需要用鼠标。

cygwin shell

文件:~/bin/s

# open chrome in new window,不跟网址时打开的窗口出提示选择 gogole 帐号(多帐号)
chrome --args --new-window https://google.com/search?q="$1"

# search.pi,自建搜索
chrome http://search.pi/query/?q="$1"
# duckduckgo
chrome https://duckduckgo.com/?q="$1"
# bing
chrome https://bing.com/search?q="$1"
# baidu
chrome https://baidu.com/s?wd="$1"

后续打开操作不需要加延时.

~/bin % s test
Opening in existing browser session.

其中 chrome 命令是软链接 chrome.exe

 % file ~/bin/chrome
/home/god/bin/chrome: symbolic link to /cygdrive/c/Program Files/Google/Chrome/Application/chrome.exe

举例: s test,使用 atl+f4 可以关闭整个窗口。

python 脚本实现

#!/usr/bin/python3.9
import os
import sys

args = sys.argv[1:]   # 参数是以空格分隔的
# 搜索词
content = '%20'.join(args)  # 合为一个字符串时,以空格分隔
chrome = r'"C:\Program Files\Google\Chrome\Application\chrome.exe"'

os.system(f'{chrome} --args --new-window https://google.com/search?q={content}')
os.system(f'{chrome} http://search.pi/query/?q={content}')
os.system(f'{chrome} https://duckduckgo.com/?q={content}')
os.system(f'{chrome} https://bing.com/search?q={content}')
os.system(f'{chrome} https://www.baidu.com/s?wd={content}')
os.system(f'{chrome} https://kagi.com/search?q={content}')

上面脚本是没问题的,但可能会有两个错误:

  1. chrome 必须用 r'"C:\Pro..."' 双重引号加 r,不然编译后运行时报错,直接运行不报。
  2. content 不能加 “”,不然会报错。
os.system(f'{chrome} http://search.pi/query/?q="{content}"')
Summary
>>> import os
>>> cmd2 = '"C:\Program Files\Google\Chrome\Application\chrome.exe" --args --new-window https://baidu.com/s?wd="a%20b%20c"'
>>> os.system(cmd2)
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
1

# wd 后面的参数不加双引号就正常了,但是下面这个在编译后运行时报错,必须给 cmd2 后面的字符串加上 r'"C:\Pro......"' 再次编译运行才正常
>>> cmd2 =  '"C:\Program Files\Google\Chrome\Application\chrome.exe" --args --new-window https://baidu.com/s?wd=a%20b%20c'
>>> os.system(cmd2)
0
>>>

下面这个脚本有错误,但是在 zsh 下可以正常运行,编译也通过,编译后的 exe 也能在 cygwin shell 下运行,但换到 cmd 下就不行。

#!/usr/bin/python3.9
import os
import sys

args = sys.argv[1:]   # 参数是以空格分隔的
content = ' '.join(args)  # 合为一个字符串时,以空格分隔

os.system(f'brave --args --new-window https://google.com/search?q="{content}"')
os.system(f'brave http://search.pi/query/?q="{content}"')
os.system(f'brave https://duckduckgo.com/?q="{content}"')
os.system(f'brave https://bing.com/search?q="{content}"')
os.system(f'brave https://www.baidu.com/s?wd="{content}"')
os.system(f'brave https://kagi.com/search?q="{content}"')

不知道为什么,问题已发到:

求解。

运行窗口

在运行窗口实现搜索:

文件:s.bat,放到某个环境变量目录下。

REM open chrome in new window
call "cmd /c start chrome --args --new-window https://google.com/search?q=%1"

REM 延时 1 秒,确保后面的页面都在同一窗口内打开。
ping -n 1 127.0.0.1>nul

REM search.pi
start chrome http://search.pi/query/?q=%1
REM duckduckgo
start chrome https://duckduckgo.com/?q=%1
REM bing
start chrome https://bing.com/search?q=%1
REM baidu
start chrome https://baidu.com/s?wd=%1

REM pause

有空格时使用双引号括起来:

image

一键清空 run 历史记录

run 运行多了就会有很多历史记录,不好清除。

下面是清空 run 记录的 python 脚本。

clear.py

from winreg import *

# 1. 连接注册表根键
regRoot = ConnectRegistry(None, HKEY_CURRENT_USER)

subDir = r'Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU'
# 2. 获取指定目录下所有键的控制
keyHandle = OpenKey(regRoot, subDir, access=KEY_ALL_ACCESS)

# 3. 存放所有的键名
lis = []
try:
    count = 0
    while True:
        name, value, _type = EnumValue(keyHandle, count)
        print(name, value, _type)
        lis.append(name)

        # 不能在这里删除,因为删除后,列表中的数量就变化了,下一轮执行 EnumValue(keyHandle, count) 时就有问题
        # DeleteValue(keyHandle, k)   
        count += 1
except Exception as err:
    print(err)

# 4. 删除键
for k in lis: DeleteValue(keyHandle, k)

# 5. 关闭
CloseKey(keyHandle)
CloseKey(regRoot)

打包为 clear.exe (pyinstaller -F clear.py,clear.exe 在 dist 目录下)并放入某个环境变量的目录下,然后就可以运行 clear 来清空 run 历史。

搜索酱也行。右键点击类别就能批量打开,也可以在设置里设置某一项不参与批量打开

这个脚本挺好使

1 个赞

好奇问一句, searchEngineJump 那么多版本,为啥大家都推荐这一个改版呢?是有啥独到之处吗?我试用了一下这一版,和我之前用的改版并没有多大的区别呀。

全网首发!是你没用过的多重搜索技巧 - 奔跑中的奶酪 (runningcheese.com)

用书签实现也不错

1 个赞

我是一直以为只有这个版本。。。。
还有就是看见你推荐那个 感觉有点花里胡哨的 (个人意见)

这个也是远古大神nlf的遗产,后来又被y大接手,之后才衍生出这么多版本。我那个花里胡哨是因为我的低级审美水准吧。你可以自己在配置页改css啊,我提供了两套模板——如果你有兴趣的话。

另外搜索酱也支持 bookmarklet 的,而且因为可以分别指向链接、图片、视频、音频、页面。甚至也能直接用快捷键来触发,可玩性应该会比直接的 bookmarklet 更好。

搜索酱划词搜索我貌似用了没反应。

就是勾选了也没效果

就是勾选了没效果

我感觉在新窗口批量打开搜索结果会更好一些,找到一两个结果后,就可以关闭整个窗口。

window.open 好像不能在新窗口打开,只能在新标签页打开(当然,也可以先 ctrl+N 创建新窗口,然后使用奶酪给出的方法进行多重搜索,但还是有些麻烦),而且用油猴脚本的话,鼠标点来点去很麻烦。

其中,分屏搜索不错,但是需要装插件,且 uBlacklist 不生效,果断放弃。

咦,你两个都勾选了吗?难道测出一个bug了?
你用的什么浏览器和脚本管理器?搜索酱的版本是多少?

我猜是右键事件被鼠标手势之类的扩展拦截掉了?

这个需求搜索酱也可以。。。只需要划选关键词之后按住shift+左键点击类别,就能在浏览器新窗口打开这一组所有网站,找到一两个结果之后直接关闭新开窗口就行了。
也支持给单个类别设置批量打开快捷键,不过快捷键就只能在当前窗口批量打开了。

昨天在手机上没细看,最下面的按钮是最近重新更新了吧?前段时间好像不一样。
现在勾选上可以正常显示了。

如果用百度和谷歌需要安装扩展,其他的好像不要