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%的網站任務中。