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

Python并行处理谷歌搜索请求 编程新手求助

并行处理谷歌搜索请求的解决方案

嗨,作为编程新手,你能意识到用并行处理优化网络请求这类IO密集型任务真的很棒!你的重复代码完全可以通过并行方式大幅节省时间,我来一步步帮你实现~

首先咱们先把重复的逻辑封装成通用函数,这样不管多少个URL都能复用:

import requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor

# 定义处理单个搜索请求的函数
def get_google_search_results(search_url):
    # 加User-Agent模拟浏览器请求,避免被谷歌反爬拦截
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    }
    try:
        response = requests.get(search_url, headers=headers)
        response.raise_for_status()  # 检查请求是否成功
        soup = BeautifulSoup(response.text, "lxml")
        result_stats = soup.find("div", {"id": "resultStats"})
        return result_stats.text if result_stats else "未找到结果统计"
    except Exception as e:
        return f"请求失败: {str(e)}"

# 要处理的搜索URL列表
search_urls = [
    'https://www.google.com.tr/search?q=test',
    'https://www.google.com.tr/search?q=test2',
    'https://www.google.com.tr/search?q=test3'
]

# 使用线程池并行执行请求(IO密集型任务用线程池更高效)
if __name__ == "__main__":
    # 创建线程池,最大线程数设为URL数量即可
    with ThreadPoolExecutor(max_workers=3) as executor:
        # 批量提交任务并获取结果
        results = executor.map(get_google_search_results, search_urls)
    
    # 遍历打印每个URL的结果
    for url, result in zip(search_urls, results):
        print(f"URL: {url}")
        print(f"结果统计: {result}\n")

为什么选ThreadPoolExecutor而非multiprocessing?

网络请求属于IO密集型任务,线程切换的开销远小于进程,用线程池更高效、资源占用更低。只有CPU密集型任务(比如大量计算)才更适合用multiprocessing。

入门核心逻辑伪代码

如果想先理清思路,核心步骤可以简化成这样:

  • 第一步:把「请求URL→解析页面→提取结果」的重复步骤写成一个函数,输入是URL,输出是目标结果
  • 第二步:把所有要处理的URL整理成一个列表
  • 第三步:创建并行执行器(线程池/进程池),将列表中的每个URL交给执行器调用函数
  • 第四步:收集所有执行结果并处理(比如打印)

额外小提醒

谷歌有反爬机制,直接裸请求容易被限制,所以代码里加了User-Agent模拟浏览器请求,你可以根据自己的浏览器调整这个值。如果还是被拦截,少量请求的话可以尝试加个短间隔,或者换个User-Agent试试~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:38:54