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

如何用Python从谷歌搜索结果中排除约2000个网页?

嘿,作为Python新手碰到这种批量排除网页的问题确实头大——谷歌那减号语法根本扛不住2000个这么多的排除项对吧?别慌,我给你捋个新手友好、通俗易懂的方案,全程用基础Python代码+一个简单工具,保证你能跟着走通~

核心思路:绕开谷歌的限制,本地过滤

谷歌的搜索指令有长度上限,2000个网址堆进去肯定直接失效。所以咱们换个思路:先把谷歌的搜索结果全部拿下来,再自己在本地把要排除的网页筛掉,完全不受谷歌的限制!

具体步骤(全程复制改参数就行)

1. 先准备你的排除列表

把2000个要排除的网址存成一个文本文件,比如命名为blocked_urls.txt,每行放一个网址,像这样:

https://example1.com/page1
https://example2.com/post/article
https://testsite.com/archive
...

然后用Python把这个文件读成一个集合(集合查找速度比列表快10倍不止,2000个元素秒查):

# 读取排除列表,存成集合
blocked_urls = set()
with open('blocked_urls.txt', 'r', encoding='utf-8') as f:
    for line in f:
        url = line.strip()  # 去掉换行符和多余空格
        if url:  # 跳过空行
            blocked_urls.add(url)

2. 获取谷歌搜索结果

这里用一个专门的Python库googlesearch-python,它能帮咱们轻松拿到谷歌的搜索结果,新手装起来也简单:
先打开命令提示符(Windows)或终端(Mac/Linux),输入:

pip install googlesearch-python

然后写代码拿搜索结果:

from googlesearch import search

# 替换成你自己的搜索关键词
your_search_query = "Python新手入门教程"
# 获取搜索结果,num_results可以设置你要拿多少条,比如100条
search_results = []
# 加pause=2是为了避免被谷歌反爬,每查一次停2秒
for result in search(your_search_query, num_results=100, pause=2):
    search_results.append(result)

3. 过滤掉要排除的网页

现在咱们把搜索结果里不在排除列表的网址挑出来:

filtered_results = []
for url in search_results:
    if url not in blocked_urls:
        filtered_results.append(url)

就这么简单!集合的not in操作超快,2000个排除项完全没压力。

4. 保存或查看结果

把过滤后的结果存成文本文件,方便你后续查看:

with open('filtered_results.txt', 'w', encoding='utf-8') as f:
    for url in filtered_results:
        f.write(url + '\n')

或者直接在控制台打印出来看看:

print("过滤后的有效搜索结果:")
for idx, url in enumerate(filtered_results, 1):
    print(f"{idx}. {url}")
新手必看的细节优化

如果发现有些网址明明要排除却没被过滤掉,大概率是网址格式不统一(比如搜索结果是https://www.example.com,你排除列表里是example.com)。可以加个小函数统一网址格式:

def normalize_url(url):
    # 统一转为小写,去掉开头的https://、http://、www.
    url = url.lower().replace('https://', '').replace('http://', '').replace('www.', '')
    # 去掉末尾的斜杠
    if url.endswith('/'):
        url = url[:-1]
    return url

# 读取排除列表时就标准化
blocked_urls = set()
with open('blocked_urls.txt', 'r', encoding='utf-8') as f:
    for line in f:
        url = line.strip()
        if url:
            blocked_urls.add(normalize_url(url))

# 过滤时也标准化网址
filtered_results = []
for url in search_results:
    if normalize_url(url) not in blocked_urls:
        filtered_results.append(url)

这样不管网址带不带www.或https://,都能正确匹配排除啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:13:08