AI News HubLIVE
站內改寫3 分鐘閱讀

用Python構建能使用瀏覽器的AI代理

本文介紹瞭如何使用Playwright、browser-use和LangGraph在Python中構建能瀏覽和操作真實網站的AI代理。文章涵蓋了Playwright相較於Selenium的優勢(持久WebSocket連接、內置瀏覽器二進制、自動等待等)、環境搭建步驟、動態頁面抓取、多步驟表單填寫、反爬蟲處理、會話持久化以及Docker部署。通過實際代碼示例,讀者將學會構建一個能導航網站、填寫表單、提取結構化數據並通過LLM決策的瀏覽器代理。

來源Machine Learning Mastery作者: Shittu Olumide

用Python構建能使用瀏覽器的AI代理

大多數AI代理教程從API開始,教你如何調用OpenWeather、Stripe端點或從GitHub拉取數據。這是一個不錯的起點,但當你嘗試構建真實應用時,會發現許多需要的任務根本沒有API支持。

人類每天用瀏覽器做的事情——填寫政府表格、查看競爭對手價格、從那些通過JavaScript渲染來保護數據的網站提取研究資料、登錄從未聽説過OAuth的門户——這些任務大約有11億個網站,其中只有極少數提供公共API,其餘只“説瀏覽器語言”。

一個只限於API調用的代理只能處理人類日常工作約5%的任務。而賦予代理瀏覽器能力後,覆蓋範圍接近100%。這正是本文要解決的問題。

據估計,2026年全球AI代理市場規模為109.1億美元,預計到2030年將達到503.1億美元,其中具備瀏覽器能力的代理是增長核心。已有27.7%的企業在生產環境中運行基於瀏覽器的代理,而兩年前這個數字幾乎為零。工具已經成熟,模式也已穩定,可以系統地教授。

為什麼選擇Playwright而非Selenium

五年前,瀏覽器自動化幾乎都使用Selenium。Selenium仍然廣泛部署、工作正常,也不會消失。但對於2026年的任何新項目,Playwright是默認選擇。原因很實際。

Selenium通過向WebDriver發送獨立的HTTP請求與瀏覽器通信,每次點擊、輸入、滾動都是一次單獨請求。Playwright則為整個會話使用持久WebSocket連接,命令通過該通道流動,沒有每次操作的往返開銷。獨立基準測試一致顯示,Playwright在測試套件級別比Selenium快30-50%,每次操作平均約290毫秒,而Selenium約536毫秒。對於可能執行數百次操作的瀏覽器代理,這種差距會疊加。

Playwright還捆綁了自己的瀏覽器二進制文件。安裝時,你會獲得與Playwright版本兼容的Chromium、Firefox和WebKit預配置版本,沒有驅動版本不匹配或CI流水線因Chrome更新而中斷的問題。它內置了自動等待——在點擊元素前會驗證元素可見、啓用且不在動畫中,無需編寫time.sleep(2)碰運氣。

對於AI代理,Playwright觸發真實的鼠標和鍵盤事件,模擬人類與瀏覽器的交互方式。設計用於檢測自動化的網站會尋找合成DOM點擊,而Playwright的交互模型更難與真實人類輸入區分。

此外還有browser-use庫,它位於更高一層。browser-use是一個Python庫,為LLM提供可工作的瀏覽器。底層使用Playwright驅動瀏覽器,但LLM讀取頁面狀態並決定點擊、輸入和提取什麼,無需CSS選擇器。你只需用自然語言描述任務,它就會完成剩下的工作。本文將覆蓋原始Playwright和browser-use,因為它們滿足不同需求:Playwright用於精確、可預測的控制,browser-use用於代理自主處理導航決策。

環境搭建

你需要Python 3.10或更高版本、OpenAI API密鑰以及大約五分鐘時間。

  1. 創建虛擬環境python -m venv browser_agent_env,然後激活(Linux/macOS: source browser_agent_env/bin/activate;Windows: browser_agent_env\Scripts\activate)。
  2. 安裝依賴pip install playwright browser-use langchain langchain-openai langgraph langchain-community python-dotenv
  3. 安裝瀏覽器二進制文件:運行playwright install chromium(或playwright install安裝所有三種引擎)。這是許多人遺漏的步驟。
  4. 存儲API密鑰:在項目目錄中創建.env文件,加入OPENAI_API_KEY=your_api_key_here,並立即添加到.gitignore
  5. 驗證工作環境:運行一個簡單腳本,導航到example.com,讀取標題並截圖保存。如果運行成功,環境就配置好了。

網頁導航與抓取

你之所以需要Playwright而不是requests+BeautifulSoup,是因為JavaScript渲染。現代網站先發送HTML框架,然後通過JavaScript動態構建實際內容(React、Vue、Angular、Next.js)。普通的HTTP請求只能獲取框架,而Playwright運行真實瀏覽器,可以像人類一樣看到所有JavaScript執行後的內容。

示例目標為books.toscrape.com,這是一個合法的抓取練習沙盒。它分頁顯示結果,使用動態類名錶示評級,較真實地反映了電商產品頁的結構。

核心代碼展示瞭如何使用wait_for_selector等待特定元素出現後再提取數據,而不是固定延時。評級提取通過CSS類名(如star-rating Three)解析出文本值。這是處理動態頁面時常見的模式。

與LLM集成:瀏覽器代理的工作流

將瀏覽器操作連接到LLM,可以使用browser-use庫和LangGraph構建代理工作流。基本概念是:LLM(如GPT-4)讀取當前頁面內容,決定下一步操作(點擊、輸入、提取、導航),然後執行並觀察結果,循環直到任務完成。

對於高級用例,需要處理反爬蟲檢測(如使用更真實的用户代理、調整視口大小、隨機延遲)、管理會話狀態(保持登錄狀態)以及使用Docker容器化部署,確保可重現性和隔離性。

L總結

本文從零開始構建了一個能使用瀏覽器的AI代理:從Playwright的基礎知識到與LangGraph和browser-use集成,再到實際部署考慮。無論你是要自動化填寫表格、抓取動態數據,還是構建一個能自主瀏覽網頁的AI助手,這些模式都適用。瀏覽器代理已將AI能力擴展到API無法覆蓋的95%的網站任務中。