You need to enable JavaScript to run this app. 如何解决Selenium爬取ESPN数据经pygsheets更新Google Sheets的写入报错
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Selenium爬取ESPN数据经pygsheets更新Google Sheets的写入报错

报错根因与修复方案

核心错误原因

  • 代码执行顺序存在致命逻辑问题:代码先通过Selenium定位到网页元素、将元素引用暂存在变量中,随后立刻执行driver.close()销毁了整个浏览器会话,之后才尝试读取greenBay[0].text的值传入Google Sheets更新接口
  • Selenium定位到的WebElement属于动态引用对象,完全绑定在活跃的浏览器会话上。会话关闭后所有元素引用都会失效,此时读取.text属性会抛出元素过期异常,根本无法拿到控制台能正常打印的正确文本,传入update_value接口的不是合法的可写入字符串,自然触发报错
  • 硬编码测试文本"Testing"属于普通Python字符串,完全不依赖浏览器会话,因此可以正常写入,和抓取到的网页文本存在本质区别

具体修复步骤

  • 调整代码执行顺序:所有需要从网页元素提取的文本内容,必须在浏览器会话存活期间读取完成,存储为普通Python字符串变量,全部提取完成后再执行关闭浏览器的操作
  • 参考调整后的关键代码片段:
# 会话存活时,把所有需要的文本全部读取为普通字符串
gb_text = gbData.text
buf_text = bufData.text
kc_text = kcData.text
no_text = noData.text
greenBay_first_text = greenBay[0].text

# 所有数据提取完成后,再关闭浏览器
driver.close()

# 后续操作Google Sheets时,直接使用提前存储的字符串变量
print(greenBay_first_text)
wks.update_value('A2', greenBay_first_text)
wks.update_value('B2', buf_text)
wks.update_value('C2', kc_text)
wks.update_value('D2', no_text)

额外注意事项

  • pygsheets的写入接口仅支持基础Python数据类型(字符串、数字、布尔值),不要将Selenium的WebElement对象、未完成文本提取的动态引用变量直接传入写入方法
  • 可以将固定时长的time.sleep(2)替换为Selenium显式等待机制,避免页面未加载完成导致的元素定位偏差,这部分优化不影响当前报错的修复逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 14:54:03