You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Selenium ChromeDriver加载国家药监局网站后页面空白问题咨询

解决Selenium访问NMPA网站页面空白的问题

嘿,我之前碰到过这个NMPA网站的同款问题——他们的反爬机制对Selenium的检测特别严格。你看到的带随机参数的URL是网站的反爬跳转,但因为ChromeDriver暴露了自动化特征,网站直接返回了空白页面。下面是几个亲测有效的解决办法:

1. 隐藏Selenium的核心特征

ChromeDriver默认会在浏览器的window.navigator对象里留下webdriver属性,网站只要检查这个属性就能识别出是自动化工具。你可以通过配置ChromeOptions和执行JS脚本来隐藏它:

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

chrome_options = Options()
# 关闭自动化提示开关
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
# 禁用自动化扩展
chrome_options.add_experimental_option('useAutomationExtension', False)
# 阻止浏览器被检测为自动化控制状态
chrome_options.add_argument("--disable-blink-features=AutomationControlled")

driver = webdriver.Chrome(executable_path="D:\Python\chromedriver.exe", options=chrome_options)
# 执行脚本清除navigator.webdriver属性
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")

driver.maximize_window()
url = 'http://app1.nmpa.gov.cn/'
driver.get(url)

# 用WebDriverWait替代time.sleep更可靠,等待页面核心元素加载
wait = WebDriverWait(driver, 60)
wait.until(EC.presence_of_element_located((By.TAG_NAME, "body")))

time.sleep(2)
driver.quit()

2. 添加真实的用户代理(User-Agent)

很多网站会检查请求头里的UA,默认的Selenium UA很容易被识别,你可以设置一个和真实Chrome浏览器一致的UA:

# 在chrome_options配置里添加这一行(替换成你自己Chrome浏览器的UA)
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")

小技巧:打开Chrome开发者工具(F12),在Network标签下随便找一个请求,查看Request Headers里的User-Agent值,直接复制过来就行。

3. 确保ChromeDriver和Chrome版本完全匹配

如果你的ChromeDriver版本和本地安装的Chrome浏览器版本不一致,也可能导致页面加载异常。你可以在Chrome的「设置→关于Chrome」里查看当前版本,然后下载对应版本的ChromeDriver。

额外小提示

尽量不要依赖time.sleep(),用WebDriverWait配合预期条件等待页面元素加载,这样既高效又能避免因为网络延迟导致的误判。

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

火山引擎 最新活动