为何使用Selenium无法打开指定网页?技术问题求助
问题分析与解决办法
你遇到的页面空白问题,大概率是目标网站通过检测Selenium的自动化特征拦截了请求,而非ChromeDriver本身或网站故障(毕竟普通浏览器能正常访问)。以下是针对性的解决步骤:
1. 添加Chrome选项隐藏自动化特征
修改代码,配置ChromeOptions来规避网站的自动化检测:
from seleniumwire import webdriver from selenium.webdriver.chrome.options import Options url = 'http://www.customs.gov.cn/customs/syx/index.html' chrome_options = Options() # 禁用自动化控制特征检测 chrome_options.add_argument('--disable-blink-features=AutomationControlled') # 移除自动化相关开关与扩展 chrome_options.add_experimental_option('excludeSwitches', ['enable-automation']) chrome_options.add_experimental_option('useAutomationExtension', False) # 设置普通浏览器的User-Agent chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36') # 禁用GPU加速避免渲染异常 chrome_options.add_argument('--disable-gpu') browser = webdriver.Chrome(options=chrome_options) # 执行JS移除navigator.webdriver标记 browser.execute_script('Object.defineProperty(navigator, "webdriver", {get: () => undefined})') browser.get(url)
2. 确保页面加载完成
如果页面加载较慢,可添加显式等待,等待核心元素或标题加载完成:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待10秒,直到页面标题包含指定关键词 WebDriverWait(browser, 10).until(EC.title_contains('海关'))
3. 尝试切换到HTTPS访问
部分网站会强制跳转HTTPS,直接访问HTTP可能导致加载异常,可将URL替换为:
url = 'https://www.customs.gov.cn/customs/syx/index.html'
内容的提问来源于stack exchange,提问作者巴萨说
相关产品推荐
相关产品推荐

