树莓派Zero使用Selenium网页爬取报错:状态码为-4
树莓派Zero无头模式运行Selenium Chromedriver报错状态码-4的解决办法
问题场景
作为网页爬取/编程/树莓派领域新手,尝试在无头模式的树莓派Zero上执行网页爬取,运行以下代码:
from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver', options=chrome_options) # Update with the actual path driver.get("https://github.com/kaliiiiiiiiii/Selenium-Profiles") print(driver.title) driver.quit()
执行命令python webscrapingexample.py时触发错误:
$ python webscrapingexample.py Traceback (most recent call last): File "/home/fanoeline/webscrapingexample.py", line 6, in <module> driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver', options=chrome_options) # Update with the actual path File "/home/fanoeline/.local/lib/python3.9/site-packages/selenium/webdriver/chrome/webdriver.py", line 73, in __init__ self.service.start() File "/home/fanoeline/.local/lib/python3.9/site-packages/selenium/webdriver/common/service.py", line 98, in start self.assert_process_still_running() File "/home/fanoeline/.local/lib/python3.9/site-packages/selenium/webdriver/common/service.py", line 109, in assert_process_still_running raise WebDriverException( selenium.common.exceptions.WebDriverException: Message: Service /usr/bin/chromedriver unexpectedly exited. Status code was: -4
已尝试重装Selenium、Chromium,推测状态码-4与文件无法打开有关,寻求解决办法。
排查与解决步骤
1. 修复ARM架构兼容性问题
树莓派Zero为ARMv6架构,普通版本Chromium/Chromedriver可能不兼容,需安装适配版本:
- 卸载现有组件:
sudo apt remove --purge chromium-browser chromium-chromedriver sudo apt autoremove - 安装ARMv6适配版本:
sudo apt install chromium-browser:armhf chromium-chromedriver:armhf - 验证版本匹配:执行
chromium-browser --version和chromedriver --version,确保主版本号完全一致。
2. 补充无头模式依赖
Chromium无头模式需要额外系统依赖,树莓派Zero可能缺失:
sudo apt install libnss3 libgconf-2-4 libasound2 libxtst6 libxss1 libgtk-3-0
3. 优化Chrome启动参数
针对树莓派Zero性能限制,添加适配参数避免崩溃:
修改代码中的ChromeOptions配置:
chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') chrome_options.add_argument('--no-sandbox') # 禁用沙箱,适配树莓派环境 chrome_options.add_argument('--disable-dev-shm-usage') # 解决/dev/shm空间不足问题 chrome_options.add_argument('--disable-gpu') # 树莓派Zero无独立GPU,强制禁用 chrome_options.add_argument('--single-process') # 单进程模式,降低资源占用
4. 检查Chromedriver权限
确保驱动文件拥有可执行权限:
sudo chmod +x /usr/bin/chromedriver
5. 替代方案:轻量浏览器
若Chromium仍无法正常运行,可切换至资源占用更低的Firefox ESR:
- 安装组件:
sudo apt install firefox-esr wget https://github.com/mozilla/geckodriver/releases/download/v0.33.0/geckodriver-v0.33.0-armv7l.tar.gz tar -xzf geckodriver-v0.33.0-armv7l.tar.gz sudo mv geckodriver /usr/local/bin/ sudo chmod +x /usr/local/bin/geckodriver - 对应Python代码示例:
from selenium import webdriver from selenium.webdriver.firefox.options import Options firefox_options = Options() firefox_options.add_argument('--headless') driver = webdriver.Firefox(options=firefox_options) driver.get("https://github.com/kaliiiiiiiiii/Selenium-Profiles") print(driver.title) driver.quit()
内容的提问来源于stack exchange,提问作者Sparkie123
相关产品推荐
相关产品推荐

