获取Google Play评论时出现WebDriverException异常求助
解决Selenium获取Google Play页面时的WebDriverException: unknown error: bad inspector message问题
我之前碰到过一模一样的报错,这个unknown error: bad inspector message大多和Chrome调试协议的异常交互有关——哪怕你已经确认了Chrome和ChromeDriver的大版本兼容,还是有几个细节可以试试修复:
1. 务必等待页面完全加载再获取page_source
Google Play的评论页有大量动态渲染的内容,直接调用driver.page_source很可能赶上页面还没加载完成的状态,触发调试协议报错。推荐用显式等待锁定某个核心元素,确保页面就绪:
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import bs4 as bs driver = webdriver.Chrome('path/to/your/chromedriver') driver.get('https://play.google.com/store/apps/details?id=com.tudasoft.android.BeMakeup&hl=en&showAllReviews=true') # 等待评论区块加载完成(这里用评论项的类名作为判断依据) WebDriverWait(driver, 15).until( EC.presence_of_element_located((By.CLASS_NAME, 'd15Mdf')) ) # 现在再获取页面源码 soup = bs.BeautifulSoup(driver.page_source, 'html.parser')
2. 禁用Chrome的自动化检测和扩展干扰
Chrome内置的自动化检测机制、扩展程序有时候会打乱调试协议的通信,启动时添加这些参数可以规避:
from selenium.webdriver.chrome.options import Options import bs4 as bs chrome_options = Options() # 禁用所有扩展 chrome_options.add_argument('--disable-extensions') # 关闭通知弹窗 chrome_options.add_argument('--disable-notifications') # 绕过自动化检测 chrome_options.add_argument('--disable-blink-features=AutomationControlled') chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option('useAutomationExtension', False) # 可选:用无痕模式避免缓存干扰 chrome_options.add_argument('--incognito') driver = webdriver.Chrome('path/to/your/chromedriver', options=chrome_options) driver.get('https://play.google.com/store/apps/details?id=com.tudasoft.android.BeMakeup&hl=en&showAllReviews=true') # 同样添加显式等待 WebDriverWait(driver, 15).until( EC.presence_of_element_located((By.CLASS_NAME, 'd15Mdf')) ) soup = bs.BeautifulSoup(driver.page_source, 'html.parser')
3. 核对ChromeDriver的精确版本
哪怕Chrome主版本是79.0.3945.117,ChromeDriver也对应多个小版本(比如79.0.3945.36),建议下载该主版本下最新的ChromeDriver小版本,旧的小版本可能存在调试协议的已知bug。
4. 尝试切换HTML解析器
虽然报错根源不在BeautifulSoup,但偶尔切换解析器也能避开一些隐性问题,比如换成lxml(需要先安装:pip install lxml):
soup = bs.BeautifulSoup(driver.page_source, 'lxml')
内容的提问来源于stack exchange,提问作者user2293224
相关产品推荐
相关产品推荐

