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

如何通过Python/Bash自动获取浏览器页面源代码?curl/wget及Snap版Chromium遇阻

解决方案:获取浏览器页面源代码&解决Snap版Chromium与Selenium兼容问题

一、解决curl/wget无法获取正确页面的问题

1. 修正命令参数格式

你的curl命令中&会被shell解析为后台运行符,导致baa被当作单独命令执行。必须用引号包裹完整URL:

curl "https://www.google.com/search?foo&baa"

2. 模拟浏览器请求头

Google等网站会校验请求的浏览器标识,非标准请求会返回异常内容。添加浏览器格式的请求头:

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" "https://www.google.com/search?foo&baa"

可补充更多适配头信息:

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" \
     -H "Accept-Language: en-US,en;q=0.9" \
     "https://www.google.com/search?foo&baa"

二、解决Snap版Chromium与Selenium的兼容问题

方案1:适配Snap版Chromium

Snap包的Chromium有沙箱限制,需在Selenium中指定二进制路径并关闭沙箱:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
# 指定Snap版Chromium的二进制路径
options.binary_location = "/snap/bin/chromium"
# 关闭沙箱以适配Snap环境
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")

driver = webdriver.Chrome(options=options)
driver.get("https://www.google.com/search?foo&baa")
# 获取对应浏览器「查看页面源代码」的内容
print(driver.page_source)
driver.quit()

若ChromeDriver无法自动匹配,可安装Snap版驱动:

sudo snap install chromedriver

然后在代码中指定驱动路径:

driver = webdriver.Chrome(executable_path="/snap/bin/chromedriver", options=options)

方案2:替换为非Snap版Chromium

从PPA安装原生Deb包版Chromium:

sudo add-apt-repository ppa:phillw/chromium/ubuntu
sudo apt update
sudo apt install chromium-browser

安装后Selenium无需额外配置,即可像普通桌面版浏览器一样使用。

方案3:改用Firefox + Selenium

Firefox仍提供原生Deb包,适配Selenium更简单:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
# 无头模式(无需弹出浏览器窗口)
options.add_argument("--headless")

driver = webdriver.Firefox(options=options)
driver.get("https://www.google.com/search?foo&baa")
print(driver.page_source)
driver.quit()

方案4:使用Playwright替代Selenium

Playwright对浏览器兼容性更好,无需手动管理驱动,还能自动处理请求拦截:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 启动无头模式的Chromium
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    # 访问页面并获取初始HTML(对应「查看页面源代码」内容)
    response = page.goto("https://www.google.com/search?foo&baa")
    print(response.text())
    browser.close()

安装依赖:

pip install playwright
playwright install chromium

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:15:33