LogoLexmount 文档

使用指南

如何使用 Lexmount Browser 核心功能

快速开始

本指南将帮助您快速开始使用 Lexmount Browser 核心功能。我们提供了Python和Node.js两种语言的SDK,您可以根据自己的需求选择合适的版本。

Python SDK 使用指南

快速获取示例

您也可以直接访问我们在 GitHub 上的 Python SDK 快速开始仓库 获取即用型示例。

前提条件

请确保您已安装 Python 3.7 或更高版本。

1. 创建并激活虚拟环境

python3 -m venv venv
source venv/bin/activate  # Linux/macOS
# 或者在 Windows 上使用
# venv\Scripts\activate

2. 安装依赖

pip install -r requirements.txt

3. 配置环境变量

cp .env.example .env
# 编辑 .env 文件,填入您的 API Key 和 Project ID

重要提示

请确保妥善保管您的 API Key,不要将其泄露给他人。

4. 运行示例

我们提供了两个示例脚本,帮助您快速了解如何使用我们的服务:

python demo.py              # 基础演示
python light-demo.py        # 轻量级浏览器演示

示例代码详解

基础演示 (demo.py)

这个示例展示了如何创建一个基本的会话并执行简单的浏览器操作:

# 导入必要的库
from playwright.sync_api import Playwright, sync_playwright
from dotenv import load_dotenv
from lexmount import Lexmount

# 首先加载环境变量
load_dotenv(override=True)

def run(playwright: Playwright) -> None:
    # 初始化 Lexmount 客户端
    lm = Lexmount()  # 自动从环境变量读取凭证

    # 在 Lexmount 上创建一个会话
    session = lm.sessions.create()

    # 连接到远程会话
    chromium = playwright.chromium
    browser = chromium.connect_over_cdp(session.connect_url)
    context = browser.contexts[0]
    page = context.pages[0]

    # 在远程浏览器标签页上执行 Playwright 操作
    page.goto("https://dev.lexmount.net/")
    page_title = page.title()
    assert page_title == "Lexmount Browser - AI-Powered Cloud Browser Service", f"页面标题不是'Lexmount Browser - AI-Powered Cloud Browser Service',而是'{page_title}'"
    page.screenshot(path="screenshot.png")

    # 关闭页面和浏览器
    page.close()
    browser.close()


if __name__ == "__main__":
    with sync_playwright() as playwright:
        run(playwright)

轻量级浏览器演示 (light-demo.py)

这个示例展示了如何使用 chrome-light-docker 模式来高效地提取网页链接:

from playwright.sync_api import Playwright, sync_playwright
from dotenv import load_dotenv
from lexmount import Lexmount

# 首先加载环境变量
load_dotenv(override=True)

def run(playwright: Playwright) -> None:
    """演示使用 chrome-light-docker 提取网页链接"""
    print("🔗 提取新闻链接演示")

    # 初始化 Lexmount 客户端
    lm = Lexmount()  # 从环境变量读取凭证

    # 创建一个 chrome-light-docker 模式的会话
    session = lm.sessions.create(browser_mode="chrome-light-docker")

    # 连接到远程会话
    chromium = playwright.chromium
    browser = chromium.connect_over_cdp(session.connect_url)
    context = browser.contexts[0]
    page = context.pages[0]

    # 在远程浏览器标签页上执行 Playwright 操作
    page.goto("https://news.sina.cn/")

    # 提取所有链接
    links = page.evaluate('''() => {
        return Array.from(document.querySelectorAll('a[href]')).map(a => a.href);
    }''')

    # 保存到文件
    with open("links.txt", "w", encoding="utf-8") as f:
        for link in links:
            f.write(link + "\n")

    print(f"✅ 已提取 {len(links)} 个链接,保存到: links.txt")

    # 关闭页面和浏览器
    page.close()
    browser.close()


if __name__ == "__main__":
    with sync_playwright() as playwright:
        run(playwright)

常见问题

Node.js SDK 使用指南

快速获取示例

您可以直接访问我们在 GitHub 上的 JavaScript/TypeScript SDK 快速开始仓库 获取即用型示例。

前提条件

请确保您已安装 Node.js 14 或更高版本。您可以从 Node.js 官网 下载并安装。

1. 安装依赖

npm install

2. 配置环境变量

在项目根目录创建 .env 文件:

# .env
LEXMOUNT_API_KEY=your_api_key_here
LEXMOUNT_PROJECT_ID=your_project_id_here

您可以从以下地址获取凭证:https://dev.lexmount.net/

3. 运行示例

# 基础演示
npm run demo

# 轻量级浏览器演示
npm run light-demo

示例代码详解

基础演示 (demo.ts)

这个示例展示了如何创建一个基本的会话并执行简单的浏览器操作:

/**
 * 基础 Lexmount 演示
 * - 访问 Lexmount 网站
 * - 验证页面标题
 * - 截取屏幕截图
 */

import { config } from 'dotenv';
import { chromium } from 'playwright';
import { Lexmount } from 'lexmount';

// 加载环境变量
config();

async function main() {
  console.log('🚀 启动 Lexmount 基础演示...\n');

  // 初始化 Lexmount 客户端
  // 自动从环境变量读取 LEXMOUNT_API_KEY 和 LEXMOUNT_PROJECT_ID
  const lm = new Lexmount();

  console.log('📡 创建浏览器会话...');
  // 在 Lexmount 上创建一个会话
  const session = await lm.sessions.create();
  console.log(`✓ 会话创建成功: ${session.sessionId}\n`);

  // 连接到远程会话
  const browser = await chromium.connectOverCDP(session.connectUrl);
  const context = browser.contexts()[0];
  const page = context.pages()[0];

  // 在远程浏览器上执行 Playwright 操作
  console.log('🌐 正在访问 Lexmount 网站...');
  await page.goto('https://dev.lexmount.net/');

  const pageTitle = await page.title();
  console.log(`📄 页面标题: ${pageTitle}`);

  // 验证页面标题
  const expectedTitle = 'Lexmount Browser - AI-Powered Cloud Browser Service';
  if (pageTitle === expectedTitle) {
    console.log('✓ 页面标题验证成功!\n');
  } else {
    throw new Error(
      `页面标题不匹配!\n期望: ${expectedTitle}\n实际: ${pageTitle}`
    );
  }

  // 截取屏幕截图
  console.log('📸 正在截取屏幕截图...');
  await page.screenshot({ path: 'screenshot.png' });
  console.log('✓ 截图已保存至: screenshot.png\n');

  // 清理资源
  await page.close();
  await browser.close();

  console.log('✨ 演示成功完成!');
}

main().catch((error) => {
  console.error('❌ 错误:', error.message);
  process.exit(1);
});

轻量级浏览器演示 (light-demo.ts)

这个示例展示了如何使用 chrome-light-docker 模式来高效地提取网页链接:

/**
 * 轻量级浏览器演示
 * - 使用 chrome-light-docker 模式
 * - 访问新浪新闻
 * - 提取所有链接并保存到 links.txt
 */

import { config } from 'dotenv';
import { chromium } from 'playwright';
import { Lexmount } from 'lexmount';
import { writeFileSync } from 'fs';

// 加载环境变量
config();

async function main() {
  console.log('🔗 提取新闻链接演示\n');

  // 初始化 Lexmount 客户端
  const lm = new Lexmount();

  console.log('📡 创建轻量级浏览器会话...');
  // 创建一个 chrome-light-docker 模式的会话
  const session = await lm.sessions.create({
    browserMode: 'chrome-light-docker',
  });
  console.log(`✓ 会话创建成功: ${session.sessionId}\n`);

  // 连接到远程会话
  const browser = await chromium.connectOverCDP(session.connectUrl);
  const context = browser.contexts()[0];
  const page = context.pages()[0];

  // 访问新浪新闻
  console.log('🌐 正在访问新浪新闻...');
  await page.goto('https://news.sina.cn/');
  console.log('✓ 页面加载完成\n');

  // 提取所有链接
  console.log('🔍 正在提取链接...');
  const links = await page.evaluate(() => {
    return Array.from(document.querySelectorAll('a[href]')).map(
      (a) => (a as HTMLAnchorElement).href
    );
  });

  // 保存到文件
  const filename = 'links.txt';
  writeFileSync(filename, links.join('\n'), 'utf-8');

  console.log(`✅ 已提取 ${links.length} 个链接,保存到: ${filename}\n`);

  // 清理资源
  // 注意:已注释掉以保持会话活动以便检查
  // await page.close();
  // await browser.close();

  console.log('✨ 演示成功完成!');
}

main().catch((error) => {
  console.error('❌ 错误:', error.message);
  process.exit(1);
});

常见问题

下一步

有问题?

如果您在使用过程中遇到任何问题,请查看 常见问题联系我们 获取支持。