playwright_browser
npx skills add https://github.com/arcanexis/alice-single --skill playwright_browser
Agent 安装分布
Skill 文档
Playwright æµè§å¨èªå¨åæè½
æ¤æè½æä¾åºäº Playwright ç宿´æµè§å¨èªå¨åè½åï¼æ¯æå¨æ 头模å¼ä¸æ§è¡å¤æçç½é¡µäº¤äºä»»å¡ã
æ ¸å¿åè½
1. åºç¡æµè§ (browser_tool.py)
访é®ç½é¡µãæªå¾ã读å HTML å 容ã
- æ¯æçå¾ ç¹å®å ç´ å è½½å®æ
- æ¯æå ¨é¡µæªå¾å HTML å 容é¢è§
- èªå¨å¤ç容å¨ç¯å¢ç sandbox éå¶
2. æ°æ®æå (scraper.py)
ä½¿ç¨ CSS éæ©å¨ç²¾ç¡®æåç½é¡µæ°æ®ã
- æ¯æå个åå¤ä¸ªå ç´ æå
- æ¯ææåææ¬æå±æ§å¼
- JSON æ ¼å¼è¾åºï¼ä¾¿äºåç»å¤ç
3. æç´¢åè½ (search.py)
使ç¨ç¾åº¦æç´¢å¼æå¹¶è¿åç»æåç»æã
- èªå¨å¡«å å ³é®è¯å¹¶æäº¤æç´¢
- æåæ é¢ã龿¥ãæè¿°
- æ¯æèªå®ä¹ç»ææ°é
4. èªå¨åäº¤äº (automator.py)
æ§è¡å¤æçæä½é¾ï¼æ¨¡æçå®ç¨æ·è¡ä¸ºã
- ç¹å»ãè¾å ¥ã䏿鿩
- æ»å¨ãçå¾ ãæ§è¡ JavaScript
- æ¯æå¨å ³é®æ¥éª¤æªå¾
5. 页é¢å¿«ç § (snapshot.py)
é«è´¨é页颿ªå¾å PDF 导åºã
- å ¨é¡µæå¯è§åºåæªå¾
- PDF æ ¼å¼å¯¼åº
- èªå¨çæç¼©ç¥å¾
6. å¾çæ¹éä¸è½½ (download_images.py)
èªå¨æåå¹¶ä¸è½½ç½é¡µä¸çææå¾çã
- æºè½æåææ img æ ç¾
- æ ¹æ® alt æ title çææä»¶å
- æ¯æèªå®ä¹ä¸è½½æ°éåè¾åºç®å½
- é«è´¨éåå§å¾çä¸è½½
ä½¿ç¨æ¹æ³
åºç¡æµè§
访é®ç½é¡µå¹¶æªå¾ï¼ “`bash python skills/playwright_browser/browser_tool.py –url https://example.com –screenshot –output example.png “`
读åé¡µé¢ HTML å å®¹ï¼ “`bash python skills/playwright_browser/browser_tool.py –url https://example.com –read “`
çå¾ ç¹å®å ç´ å è½½ï¼ “`bash python skills/playwright_browser/browser_tool.py –url https://example.com –screenshot –wait .main-content “`
æ°æ®æå
æåå个å ç´ ææ¬ï¼ “`bash python skills/playwright_browser/scraper.py https://example.com –selector title:h1:text “`
æåå¤ä¸ªå ç´ ï¼å¦ææé¾æ¥ï¼ï¼ “`bash python skills/playwright_browser/scraper.py https://example.com –selector links:a:href:multiple –json “`
æåç¹å®å±æ§ï¼ “`bash python skills/playwright_browser/scraper.py https://example.com –selector img_url:img:src “`
ç¾åº¦æç´¢
æç´¢å ³é®è¯ï¼ “`bash python skills/playwright_browser/search.py “æç´¢å ³é®è¯” –max 10 “`
JSON æ ¼å¼è¾åºï¼ “`bash python skills/playwright_browser/search.py “æç´¢å ³é®è¯” –json > results.json “`
èªå¨å交äº
ä½¿ç¨ JSON é ç½®æä»¶ï¼ “`bash python skills/playwright_browser/automator.py https://example.com –file actions.json “`
ç´æ¥ä¼ å ¥æä½é¾ï¼ “`bash python skills/playwright_browser/automator.py https://example.com –actions ‘[{“type”:”fill”,”selector”:”#input”,”value”:”test”},{“type”:”click”,”selector”:”#submit”}]’ “`
actions.json 示ä¾ï¼ “`json [ {“type”: “wait”, “delay”: 2000}, {“type”: “fill”, “selector”: “#username”, “value”: “alice”}, {“type”: “fill”, “selector”: “#password”, “value”: “password”}, {“type”: “click”, “selector”: “#login”}, {“type”: “wait_for”, “selector”: “.dashboard”}, {“type”: “screenshot”, “filename”: “dashboard.png”} ] “`
页é¢å¿«ç §
å ¨é¡µæªå¾ï¼ “`bash python skills/playwright_browser/snapshot.py https://example.com –output fullpage –full-page “`
导åºä¸º PDFï¼ “`bash python skills/playwright_browser/snapshot.py https://example.com –output report –format pdf “`
æ¹éä¸è½½å¾ç
ä¸è½½ç½é¡µä¸çææå¾çï¼ “`bash python skills/playwright_browser/download_images.py https://example.com –output-dir downloaded_images –max 10 “`
åæ°è¯´æï¼
--output-dir: è¾åºç®å½ï¼ç¸å¯¹äº alice_output/ï¼ï¼é»è®¤ä¸º “images”--max: æå¤§ä¸è½½æ°éï¼é»è®¤ä¸º 20
示ä¾ï¼ “`bash
ä» NVIDIA å®ç½ä¸è½½æå¤ 5 å¼ å¾ç
python skills/playwright_browser/download_images.py https://www.nvidia.cn –output-dir nvidia_images –max 5 “`
ææ¯ç»è
- æµè§å¨å¼æ: Chromium (æ 头模å¼)
- è§å£è®¾ç½®: é»è®¤ 1280×800 (坿 ¹æ®éè¦è°æ´)
- 容å¨ä¼å: èªå¨æ·»å
--no-sandboxå--disable-setuid-sandboxåæ° - 弿¥æ§è¡: ä½¿ç¨ asyncio å®ç°é«æå¹¶å
- è¾åºç®å½: æææä»¶é»è®¤ä¿åè³
alice_output/
æ¯æçæä½ç±»å (automator.py)
| ç±»å | åæ° | 说æ |
|---|---|---|
click |
selector | ç¹å»æå®å ç´ |
fill |
selector, value | è¾å ¥ææ¬ |
select |
selector, value | 䏿鿩 |
wait |
delay | çå¾ æå®æ¯«ç§æ° |
scroll |
selector æ position | æ»å¨å°å ç´ æé¡µé¢é¡¶é¨/åºé¨ |
screenshot |
filename | ä¿åæªå¾ |
evaluate |
script | æ§è¡ JavaScript |
wait_for |
selector | çå¾ å ç´ åºç° |
éæ©å¨é ç½®æ ¼å¼ (scraper.py)
éæ©å¨åæ°æ ¼å¼ï¼name:css_selector:attribute[:multiple]
name: æåç»æçé®åcss_selector: CSS éæ©å¨attribute: è¦æåç屿§ï¼é»è®¤textï¼ææ¬å 容ï¼multiple: å¯éï¼è®¾ä¸ºtrueæ¶æåææå¹é 项
示ä¾ï¼
title:h1:text– æå h1 æ ç¾çææ¬images:img:src:multiple– æåææ img ç src 屿§links:a:href– æå第ä¸ä¸ª a æ ç¾ç href
注æäºé¡¹
- 容å¨éå¶: å¨å®¹å¨ç¯å¢ä¸è¿è¡æ¶ï¼å¿
须使ç¨
--no-sandboxåæ°ï¼å·²èªå¨å¤çï¼ - è¶ æ¶è®¾ç½®: é»è®¤è¶ æ¶æ¶é´ä¸º 30 ç§ï¼å¯æ ¹æ®ä»»å¡å¤æåº¦è°æ´
- 卿å
容: å¦éçå¾
JavaScript 渲æï¼ä½¿ç¨
--waitåæ°æwait_foræä½ - åç¬çç¥: æäºç½ç«å¯è½æåç¬è«æºå¶ï¼å»ºè®®é彿·»å å»¶è¿
- å å使ç¨: å¤ç大é页颿¶æ³¨æå åå ç¨ï¼å¯åæ¹å¤ç
- ä¾èµè¦æ±: éè¦å·²å®è£
playwrightå åæµè§å¨äºè¿å¶æä»¶ - å¾çä¸è½½: æäºç½ç«å¯è½æé²ç龿ºå¶ï¼å¯¼è´é¨åå¾çæ æ³ä¸è½½
ä¾èµå®è£
“`bash pip install playwright playwright install chromium “`
常è§é®é¢
Q: å¦ä½å¤çéè¦ç»å½ç页é¢ï¼ A: ä½¿ç¨ automator.py çæä½é¾ï¼æé¡ºåºæ§è¡ fill (ç¨æ·å) â fill (å¯ç ) â click (ç»å½æé®) â wait_for (ç»å½åå ç´ )
Q: å¦ä½æå JavaScript 卿çæçå
容ï¼
A: ä½¿ç¨ browser_tool.py ç --wait åæ°æ scraper.py ç --wait åæ°çå¾
å
ç´ å è½½
Q: å¦ä½å¤çå¼¹åºæ¡ï¼
A: ä½¿ç¨ automator.py ç evaluate æä½æ§è¡ JavaScript å
³éï¼æå¨é¡µé¢ä¸ä¸æä¸æåç¦ç¨
Q: 为ä»ä¹æäºç½ç«æ æ³è®¿é®ï¼ A: å¯è½æ¯åç¬è«éå¶ï¼å¯ä»¥å°è¯è®¾ç½® user-agent æä½¿ç¨ä»£çï¼éä¿®æ¹ä»£ç æ·»å context é ç½®ï¼
Q: 为ä»ä¹åªä¸è½½äºé¨åå¾çï¼ A: æäºå¾çå¯è½æå 载延è¿ãé²ç龿 base64 ç¼ç ãèæ¬ä¼èªå¨è·³è¿æ æ³è®¿é®çå¾ç
Q: ä¸è½½çå¾çæä»¶åå¦ä½ç¡®å®ï¼ A: èæ¬ä¼ä¼å ä½¿ç¨ img æ ç¾ç alt 屿§ï¼å ¶æ¬¡æ¯ title 屿§ãå¦ææ²¡æåä½¿ç¨ “image_N” æ ¼å¼