API 介紹
啟動器
- pyppeteer.launcher.launch()
啟動 Chrome 進(jìn)程并返回瀏覽器實例
參數(shù):
參數(shù) | 類型 | 解釋 |
---|---|---|
ignoreHTTPSErrors | bool | 是否忽略 HTTPS 錯誤冻记。默認(rèn)為 False
|
headless | bool | 無頭模式下運行瀏覽器。默認(rèn)為 True 除非 appMode 或 devtools 選項 True
|
executablePath | str | 運行 Chromium 或 Chrome 可執(zhí)行文件的路徑,而不是默認(rèn)捆綁的 Chromium |
slowMo | int或float | 按指定的毫秒數(shù)減慢 pyppeteer 操作。 |
args | List [str] | 傳遞給瀏覽器進(jìn)程的附加參數(shù)(標(biāo)志)。 |
dumpio | bool | 是否管道瀏覽器進(jìn)程 stdout 和 stderr 進(jìn)入 process.stdout 和process.stderr 。默認(rèn)為 False点额。 |
userDataDir | str | 用戶數(shù)據(jù)目錄的路徑 |
env | dict | 指定瀏覽器可見的環(huán)境變量舔株。默認(rèn)與 python 進(jìn)程相同。 |
devtools | bool | 為每個選項卡自動打開 DevTools 面板还棱。如果是此選項 True 载慈,headless 則將設(shè)置該選項 False 。 |
logLevel | int或str | 用于打印日志的日志級別珍手。默認(rèn)值與根記錄器相同办铡。 |
autoClose | bool | 腳本完成時自動關(guān)閉瀏覽器進(jìn)程。默認(rèn)為 True 琳要。 |
loop | asyncio.AbstractEventLoop | 事件循環(huán)(實驗)寡具。 |
使用注意:
參數(shù) | 注意 |
---|---|
ignoreHTTPSErrors | 不解釋 |
headless | 不解釋 |
executablePath | 默認(rèn)的路徑就行 |
slowMo | 一般要加這個參數(shù) |
args | 常用的有['--no-sandbox','--disable-gpu', '--disable-setuid-sandbox','--window-size=1440x900'] |
dumpio | 不加 dumpio=True 有時會出現(xiàn)瀏覽器卡頓 |
userDataDir | 保留 cookie等數(shù)據(jù),可以達(dá)到免登錄稚补,而這個參數(shù)沒什么用 |
env | 看需要 |
devtools | 看需要 |
logLevel | 無用 |
autoClose | 默認(rèn)就好童叠,不過如果你需要保持瀏覽器狀態(tài),可以不關(guān)閉课幕,下次直接連接這個已存在的瀏覽器 |
loop | 看需要 |
- pyppeteer.launcher.connect() 連接到現(xiàn)有的 Chrome
參數(shù):
參數(shù) | 類型 | 解釋 |
---|---|---|
browserWSEndpoint | str | 要連接的瀏覽器 WebSocket 端點拯钻。(必填) |
ignoreHTTPSErrors | bool | 是否忽略 HTTPS 錯誤。默認(rèn)為 False 撰豺。 |
slowMo | int或float | 按指定的毫秒數(shù)減慢 pyppeteer 的速度粪般。 |
logLevel | int或str | 用于打印日志的日志級別。默認(rèn)值與根記錄器相同 |
loop | asyncio.AbstractEventLoop | 事件循環(huán)(實驗) |
使用注意:
browserWSEndpoint:格式是 ws://${host}:${port}/devtools/browser/<id>污桦。
瀏覽器的 wsEndpoint 這個值亩歹,可以通過
brower = pyppeteer.launcher.launch()
dev = brower. wsEndpoint
來獲取,保存這個值就可以下次啟動了
- pyppeteer.launcher.executablePath() 獲取默認(rèn) Chrome 的可執(zhí)行路徑
瀏覽器類
- pyppeteer.browser.Browser() 這個類是由 launch()返回的實例
參數(shù) | 解釋 |
---|---|
_contexts | 返回所有打開的瀏覽器上下文的列表,在新創(chuàng)建的瀏覽器中凡橱,這將返回單個實例 |
close() | 關(guān)閉連接并終止瀏覽器進(jìn)程 |
createIncognitoBrowserContext() | 創(chuàng)建一個新的隱身瀏覽器上下文小作。這不會與其他瀏覽器上下文共享 cookie /緩存 |
disconnect() | 斷開瀏覽器 |
newPage() | 在此瀏覽器上創(chuàng)建新頁面并返回其對象 |
pages() | 獲取此瀏覽器的所有頁面。返回格式為列表稼钩,包含所有頁面 |
process | 返回此瀏覽器的進(jìn)程 |
target() | 獲取瀏覽器中所有活動目標(biāo)的列表 |
userAgent() | 返回瀏覽器的原始 UA |
version() | 獲取瀏覽器的版本 |
wsEndpoint | 返回 WebSocket 端點 url |
頁面類
- pyppeteer.page.Page() 由 brower.newPage()或者 brower.pages()得到
- J():別名 querySelector()顾稀,看名字就知道通過 CSS 選擇器來選出元素
- JJ(): 別名 querySelectorAll()
- Jeval(): 功能比 page.J()功能多一點,可以選出網(wǎng)頁文本或者屬性指
- JJeval(): querySelectorAllEval()
- Jx(): 別名 xpath()
- addScriptTag(): 將腳本標(biāo)記添加到此頁面坝撑, 返回 ElementHandle其中一個 url静秆,path 或 content 選擇是必要的。
參數(shù) 類型 解釋 url 字符串 要添加的腳本的 URL巡李。 path 字符串 要添加的本地 JavaScript 文件的路徑抚笔。 content 字符串 要添加的 JavaScript 字符串。 type 字符串 腳本類型侨拦。使用 module
以加載一個 JavaScript ES6 模塊殊橙。 - coroutine addStyleTag(): 將樣式或鏈接標(biāo)記添加到此頁面, 返回 ElementHandle
其中一個url
,path
或content
選擇是必要的膨蛮。參數(shù) 類型 解釋 url 字符串 要添加的鏈接標(biāo)記的 URL叠纹。 path 字符串 要添加的本地 CSS 文件的路徑 content 字符串 要添加的 CSS 字符串 - authenticate(): 提供 http 身份驗證的憑據(jù)
- bringToFront(): 將頁面置于前面
- browser: 獲取該頁面所屬的瀏覽器
- click(): 相當(dāng)于鼠標(biāo)左鍵單擊匹配的元素,參數(shù)是 CSS 選擇器的字符串敞葛。如果沒有匹配到元素誉察,則會引發(fā) PageError
參數(shù) 類型 解釋 button str left,right 或 middle制肮,默認(rèn)為 left冒窍。 clickCount int 默認(rèn)為 1递沪。 delay int或float 等待時間 mousedown 和 mouseup 以毫秒為單位的時間豺鼻。默認(rèn)為 0。 - close(): 關(guān)閉此頁面
- content(): 獲取頁面的完整 HTML 內(nèi)容
- cookies(): 獲取 cookie款慨。參數(shù)為 URL儒飒,如果未指定 URL,則此方法返回當(dāng)前頁面 URL 的 cookie檩奠。如果指定了 URL桩了,則僅返回這些 URL 的 cookie
- coverage: 返回 coverage
- deleteCookie(): 刪除 cookie,參數(shù)為 cookie 字段參數(shù)埠戳,比如 name井誉、url、domain整胃、path 等
- emulate(): 模擬給定的設(shè)備指標(biāo)和用戶代理颗圣。相當(dāng)于同時設(shè)置了 setUserAgent()、setViewport()
- emulateMedia(): 模擬頁面的 CSS 媒體類型屁使。參數(shù)為:screen在岂、print、None蛮寂。
- evaluate(): 在瀏覽器上執(zhí)行 js 并獲取結(jié)果
- evaluateHandle(): 同上蔽午,只是會返回一個值。
- evaluateOnNewDocument(): 也是執(zhí)行 js酬蹋,在頁面跳轉(zhuǎn)時執(zhí)行
- exposeFunction(): 將 python 函數(shù)添加到瀏覽器的 window 對象中 name及老。
- focus(): 聚焦匹配的元素。如果不存在范抓,拋出 PageError
- frames:獲取此頁面的所有 frame
- goBack():返回上一個網(wǎng)頁写半。如果不存在,則返回 None
- goForward(): 跳轉(zhuǎn)到下一頁尉咕。如果不存在叠蝇,則返回 None
- goto(): 訪問某個 URL
參數(shù) 解釋 url - timeout - waitUntil 等待訪問成功,參數(shù)需要另外指定 - hover(): 鼠標(biāo)懸停匹配的元素
- isClosed(): 判斷頁面是否關(guān)閉
- keyboard: 獲取 keyboard 對象
- mainFrame: 獲取 frame 頁面的主要內(nèi)容
- metrics(): 獲取頁面中的信息
- mouse: 獲取 mouse 對象
- reload(): 刷新網(wǎng)頁
- screenshot(): 截圖
參數(shù) 類型 解釋 path str 保存圖像的文件路徑。屏幕截圖類型將從文件擴(kuò)展名中推斷出來。 type str 指定屏幕截圖類型悔捶,可以是 jpeg 或 png铃慷。默認(rèn)為 png。 quality int 圖像的質(zhì)量蜕该,在 0-100 之間犁柜。不適用于 png 圖像 fullPage bool 如果為 true,請截取完整的可滾動頁面堂淡。默認(rèn)為 False馋缅。 clip 字典 指定頁面剪切區(qū)域的對象。有參數(shù) x
,y
,width
,height
omitBackground bool 隱藏默認(rèn)的白色背景并允許捕獲具有透明度的屏幕截圖绢淀。 encoding str 圖像的編碼可以是 base64
或binary
萤悴。默認(rèn)為binary
- select(): 選擇選項并返回所選值。如果未找到元素皆的,拋出 ElementHandleError覆履。
- setCacheEnabled(): 為每個請求啟用/禁用緩存。默認(rèn)啟用
- setContent(): 將 HTML 加到網(wǎng)頁
- setCookie(): 設(shè)置 cookie
- setDefaultNavigationTimeout(): 更改默認(rèn)的最大導(dǎo)航超時费薄。默認(rèn) 30 秒
- setJavaScriptEnabled(): 設(shè)置 JavaScript 啟用/禁用
- setExtraHTTPHeaders(): 設(shè)置默認(rèn) headers 頭硝全,值為一個字典
- setRequestInterception(): 啟用/禁用請求攔截。配合 page.on()
- setUserAgent(): 設(shè)置要在此頁面中使用的 UA
- setViewport(): 設(shè)置窗口大小楞抡。
參數(shù) 類型 解釋 width int 以像素為單位的頁面寬度伟众。 height int 以像素為單位的頁面高度 deviceScaleFactor float 默認(rèn)為 1.0 isMobile float 默認(rèn)為 False
。hasTouch bool 默認(rèn)為 False
isLandscape bool 默認(rèn)為 False
- tap(): 點擊與之匹配的元素
- title(): 獲取頁面標(biāo)簽
- tracing:獲取 tracing 對象
- type(): 往輸入框中輸入內(nèi)容召廷,第一個參數(shù)為 CSS 選擇器凳厢,第二個為文本內(nèi)容
- url:獲取此頁面的 url
- waitFor(): 等待頁面上匹配的函數(shù),超時或元素柱恤。參數(shù)可以是 int 或者 float数初,單位毫秒。也可以是 CSS 選擇器
- waitForNavigation(): 等到網(wǎng)頁跳轉(zhuǎn)
- waitForRequest(): 等待請求
- waitForResponse(): 等待回應(yīng)
- waitForSelector(): 等到頁面上出現(xiàn)匹配的元素梗顺。其實 waitFor()也有同樣功能泡孩。
- waitForFunction(): 等到函數(shù)完成并返回一個值
- waitForXPath(): 等到 xpath 頁面上出現(xiàn)匹配的元素
- workers: 獲取頁面的所有 worker。
- xpath(): xpath頁面尋找
worker 類
- page.on('workercreated', 函數(shù)) 這個函數(shù)傳入的參數(shù)就是 worker 類
- evaluate(): 同上
- evaluateHandle():同上
- executionContext():同上
- url: 同上
鍵盤類
- down(): 如果沒有參數(shù)寺谤,則是按下鼠標(biāo)左鍵仑鸥。如果是鍵盤的某個值比如 shift、A 等鍵变屁,則是相當(dāng)于按下這些鍵眼俊。
- press(): 同 down(),但是上面是不會釋放鼠標(biāo)或者鍵盤粟关,需要調(diào)用 up 方法釋放鼠標(biāo)疮胖。
- sendCharacter:將字符發(fā)送到頁面。
- type(): 同上
- up(): 釋放由 down 按下的鍵或者鼠標(biāo)
鼠標(biāo)類
- click(): 按下(x, y)處的按鈕
參數(shù) 類型 解釋 button STR left(左鍵)、right(右鍵)或 middle(中鍵)澎灸,默認(rèn)為 left
clickCount int 默認(rèn)為 1院塞。 delay int或float 等待時間 mousedown
和mouseup
以毫秒為單位的時間。默認(rèn)為 0 - down(): 同上
- move(): 移動鼠標(biāo)光標(biāo)性昭。
- up(): 同上
tracing 類
創(chuàng)建可在 Chrome DevTools 或時間線查看器打開的跟蹤文件 拦止,使用如下
await page.tracing.start({'path': 'trace.json'})
await page.goto('https://www.google.com')
await page.tracing.stop()
- start(): 開始跟蹤
- stop(): 停止跟蹤
Dialog類
page.on( 'dialog', 函數(shù))
,函數(shù)的參數(shù)就是這個類
- accept(): 接受對話框
- defaultValue: 如果對話框提示糜颠,則獲取默認(rèn)提示值
- dismiss(): 關(guān)閉對話框
- message: 獲取對話框消息
- type: 獲取對話框類型汹族。類型有:
alert
,beforeunload
其兴,confirm
顶瞒,或prompt
frame 類
- isDetached(): 如果此框架已分離,則返回 True
- name:獲取 frame 的名稱忌警,如果沒有則返回 ID
- parentFrame:獲取父框架
frme類和page基本相同 一般使用page
ElementHandle 類
參數(shù) | 解釋 |
---|---|
J() | - |
JJ() | - |
JJeval() | - |
asElement | - |
boundingBox() | 返回此元素的邊界框搁拙,如果元素不可見秒梳,則返回 None |
boxModel() | 返回元素框 |
click() | - |
contentFrame() | 返回元素句柄的 frame |
focus() | - |
hover() | - |
isIntersectingViewport() | 如果元素在視口中可見法绵,則返回 True |
press() | - |
screenshot() | - |
tap() | - |
type() | - |
uploadFile() | 上傳文件 |
request 類
- page.on('request', 函數(shù)) 這個函數(shù)傳入的參數(shù)就是 request 類
- abort(): 中斷請求
- continue_(): 使用可選的請求覆蓋繼續(xù)請求
參數(shù) 類型 解釋 url str 如果設(shè)置,請求 URL 將被更改酪碘。 method str 如果設(shè)置朋譬,則更改請求方法(例如 GET
)。postData str 如果設(shè)置兴垦,則更改發(fā)布數(shù)據(jù)或請求徙赢。 headers dict 如果設(shè)置,則更改請求 HTTP 標(biāo)頭 - failure(): 返回錯誤文本
- frame : 返回匹配的 frame 對象
- headers: 返回此請求的 HTTP 標(biāo)頭字典
- method:返回此請求的方法
- postData: 返回此請求的子正文
- redirectChain: request 類重定向的所有請求
- resourceType:渲染引擎感知的此請求的資源類型
- respond(): 通過給定的參數(shù)修改請求
參數(shù) 類型 解釋 status int 響應(yīng)狀態(tài)代碼探越,默認(rèn)為 200狡赐。 headers dict 可選的響應(yīng)頭。 contentType str 如果設(shè)置钦幔,則等于設(shè)置 Content-Type
響應(yīng)頭body str或bytes 可選的響應(yīng)主體 - response(): 返回匹配的 response 對象
- url: 此請求的 URL
response 類
參數(shù) | 解釋 |
---|---|
buffer() | 返回相應(yīng)的字節(jié)內(nèi)容 |
fromCache | 如果響應(yīng)是從緩存提供的枕屉,則返回 True。緩存可能是瀏覽器的磁盤緩存或者內(nèi)存鲤氢,而不是服務(wù)器響應(yīng)的 |
fromServiceWorker | 如果響應(yīng)由服務(wù)器提供搀擂,則返回 True |
headers | 返回此響應(yīng)的 HTTP 標(biāo)頭字典 |
json() | 獲取響應(yīng)正文的 JSON |
ok | 返回 bool 此請求是否成功 |
request | 獲取匹配的 request 對象 |
securityDetails | 返回與此響應(yīng)關(guān)聯(lián)的安全詳細(xì)信息 |
status | 響應(yīng)的狀態(tài)代碼 |
text() | 獲取響應(yīng)正文的文本 |
url | 響應(yīng)的 URL |
target 類
參數(shù) | 解釋 |
---|---|
browser | 獲取目標(biāo)所屬的瀏覽器 |
browserContext | 返回目標(biāo)所屬的瀏覽器上下文 |
createCDPSession() | 創(chuàng)建附加到目標(biāo)的 Chrome Devtools 協(xié)議會話 |
opener | 獲取打開此目標(biāo)的目標(biāo) |
page() | 獲取此目標(biāo)的頁面 |
type | 獲取此目標(biāo)的類型 |
url | 獲取此目標(biāo)的網(wǎng)址 |
Debugging
對于調(diào)試,您可以設(shè)置 for 和 功能 logLevel
選項卷玉。但是哨颂,此選項會打印太多日志,包括 pyppeteer 的 SEND / RECV 消息相种。為了只顯示被抑制的錯誤消息威恼,您應(yīng)該設(shè)置 logging.DEBUG 為 True
mport asyncio
import pyppeteer
from pyppeteer import launch
pyppeteer.DEBUG = True # 在此處設(shè)置
async def main():
browser = await launch()
asyncio.get_event_loop().run_until_complete(main())