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

为什么Python中Selenium交互式运行与脚本运行的输出结果存在差异?

问题原因分析
  • 最核心的原因是缺少页面渲染等待逻辑:非交互式脚本执行时,代码是连续无停顿运行的,driver.get() 方法默认仅等待页面初始HTML的DOM加载完成,不会等待异步JavaScript执行、后端接口请求返回、动态内容渲染的整个过程。而在iPython交互式环境中,你手动输入每条命令的间隔,刚好给了页面足够的时间完成所有动态渲染,因此可以拿到完整的页面源码。
  • 次要可能原因是无头Chrome的自动化特征被站点反爬策略识别,阻止了后续JS资源的加载:部分站点会检测浏览器是否处于自动化控制状态,对疑似爬虫的请求只返回基础静态内容,不加载动态JS组件。
解决方案

你可以通过增加显式等待逻辑、补充反检测启动参数解决该问题,修改后的参考代码如下:

#!/usr/bin/python3
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

WINDOW_SIZE = "1920,1080"

chrome_options = Options()
chrome_options.add_argument("--headless=new")  # 新版无头模式,和普通浏览器行为兼容性更好
chrome_options.add_argument("--window-size={0}".format(WINDOW_SIZE))
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
# 添加反检测参数,避免被识别为自动化爬虫
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option("useAutomationExtension", False)

service = Service('/usr/local/bin/chromedriver')
driver = webdriver.Chrome(service=service, options=chrome_options)
# 隐式等待兜底,全局最多等待10秒查找元素
driver.implicitly_wait(10)

driver.get("https://www.stakingrewards.com/staking/?page=1&sort=rank_ASC")
# 显式等待:等待页面核心质押列表元素加载完成,最多等20秒
try:
    WebDriverWait(driver, 20).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "[data-testid='staking-table']"))
    )
    # 额外等待1秒保证所有动态内容渲染完成,可根据实际情况调整
    time.sleep(1)
except Exception as e:
    print("元素加载超时:", e)

src  = driver.page_source
# Check page source length
print(len(src))

# Quit all windows related to the driver instance
driver.quit()

如果调整后仍有问题,可以在获取源码前先加time.sleep(5)做验证,确认是等待时长不足的问题后,再调整显式等待的元素选择器和超时时间即可。

内容的提问来源于stack exchange,提问作者K-83Rick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:54:04