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

PythonAnywhere迁移ChromeDriver脚本遇元素未找到问题求助

解决PythonAnywhere爬虫「未找到元素」问题

本地能正常运行的Python爬虫脚本,迁移到PythonAnywhere后出现「未找到元素」错误,原代码如下:

service_log_path = "chromedriver.log"
service_args = ['--verbose']
choptions = webdriver.ChromeOptions()
choptions.add_argument('--headless')
choptions.add_argument('--no-sandbox')
choptions.add_argument('--disable-extensions')
choptions.add_argument('--disable-gpu')
browser = webdriver.Chrome(options=choptions,service_log_path=service_log_path)
browser.get('xyz.com')
time.sleep(10)
username = browser.find_elements("id","abc")

常见问题排查与修复方案

  • Chrome与ChromeDriver版本不兼容
    PythonAnywhere上的Chrome版本和本地大概率不一致,直接沿用本地驱动会触发兼容性问题。可以在PythonAnywhere终端执行google-chrome --version查看当前Chrome版本,下载对应版本的ChromeDriver替换,或者用webdriver-manager自动管理驱动版本:

    from webdriver_manager.chrome import ChromeDriverManager
    browser = webdriver.Chrome(options=choptions, executable_path=ChromeDriverManager().install())
    
  • 页面加载不充分
    固定10秒sleep无法保证动态渲染页面完全加载,改用显式等待更可靠:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    browser.get('xyz.com')
    # 最多等待20秒,直到目标元素出现
    username = WebDriverWait(browser, 20).until(
        EC.presence_of_element_located((By.ID, "abc"))
    )
    
  • 无头模式窗口尺寸问题
    无头Chrome默认窗口过小,可能导致元素布局异常或被隐藏,添加窗口尺寸参数:

    choptions.add_argument('--window-size=1920,1080')
    
  • 反爬检测拦截
    PythonAnywhere的服务器IP容易被网站识别为爬虫,添加User-Agent伪装成普通浏览器:

    choptions.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36')
    

修改后的完整代码示例

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time

service_log_path = "chromedriver.log"
service_args = ['--verbose']
choptions = webdriver.ChromeOptions()
choptions.add_argument('--headless')
choptions.add_argument('--no-sandbox')
choptions.add_argument('--disable-extensions')
choptions.add_argument('--disable-gpu')
choptions.add_argument('--window-size=1920,1080')
choptions.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36')

# 自动匹配ChromeDriver版本
browser = webdriver.Chrome(options=choptions, executable_path=ChromeDriverManager().install(), service_log_path=service_log_path)
browser.get('xyz.com')

# 显式等待元素出现
try:
    username = WebDriverWait(browser, 20).until(
        EC.presence_of_element_located((By.ID, "abc"))
    )
    print("元素找到")
except:
    print("超时未找到元素")
    browser.save_screenshot('page_screenshot.png')  # 保存截图排查页面实际内容
browser.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:20:27