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

使用BeautifulSoup爬取谷歌搜索结果时Title与链接无法正常输出问题

谷歌爬虫问题排查及修复方案

问题根因定位

  • 裸except全局吞错:当前的异常捕获逻辑会吃掉所有运行时错误,无法定位具体故障点,代码执行中途报错后直接进入下一轮循环,导致links和titles的赋值逻辑根本没有执行
  • 变量名不统一:初始化的描述存储列表是descriptions = [],但实际赋值时用的是description_text.append(),这一步会直接抛出NameError,触发异常跳过后续代码,是最核心的故障原因
  • 协议不规范:使用http开头的谷歌搜索地址会触发重定向,容易出现页面加载不完整的问题
  • 无加载等待:driver.get(url)执行后没有等待页面渲染完成就直接解析源码,可能出现元素未加载的问题
  • 类名动态性:谷歌会根据客户端、登录状态、UA返回不同的页面结构,本地浏览器看到的类名和selenium拿到的页面类名可能不一致

修复步骤

  1. 把异常捕获改成带报错打印的逻辑,先明确错误类型
  2. 统一描述列表的变量名
  3. 把搜索地址改成https协议
  4. 增加页面加载等待逻辑
  5. 打印当前拿到的页面源码确认类名是否匹配

修正后可运行代码

from bs4 import BeautifulSoup    
import time
# 此处需提前正确初始化driver,示例初始化逻辑:
# from selenium import webdriver
# driver = webdriver.Chrome()

query = input("Enter your value: ")
print("Search Term:" + query)

links = [] # 存储最终结果链接
titles = [] # 存储标题
description_text = [] # 存储描述,和后续赋值的变量名保持统一
n_pages = 6 

for page in range(1, n_pages):
    # 改成https协议避免重定向问题
    url = "https://www.google.com/search?q=" + query + "&start=" + str((page - 1) * 10)
    print("当前爬取页面:" + url)
    driver.get(url)
    # 增加2秒等待,确保页面元素加载完成
    time.sleep(2)
    soup = BeautifulSoup(driver.page_source, 'html.parser')
    
    # 临时打印确认yuRUbf类是否存在,调试正常后可删除
    # print("页面是否包含yuRUbf类:", "yuRUbf" in soup.prettify())
    try:
        search = soup.find_all('div', class_ = "yuRUbf")
        for link in search:
            links.append(link.a['href'])

        description = soup.find_all('div', class_ = "VwiC3b yXK7lf MUxGbd yDYNvb lyLwlc lEBKkf")
        for d in description:
            description_text.append(d.span.text)

        title = soup.find_all('div', class_ = "yuRUbf")
        for t in title:
            titles.append(t.h3.text)
    
    # 打印异常信息,避免无差别吞错
    except Exception as e:
        print(f"第{page}页爬取报错:", e)
        continue

print("链接列表:", links)
print("链接数量:", len(links))

print("描述列表:", description_text)
print("描述数量:", len(description_text))

print("标题列表:", titles)
print("标题数量:", len(titles))

# 爬取完成后关闭driver
driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:36:05