python爬蟲-pyppeteer常用API

pyppeteer的基本使用

API 介紹

啟動器

  • pyppeteer.launcher.launch()
    啟動 Chrome 進(jìn)程并返回瀏覽器實例

參數(shù):

參數(shù) 類型 解釋
ignoreHTTPSErrors bool 是否忽略 HTTPS 錯誤冻记。默認(rèn)為 False
headless bool 無頭模式下運行瀏覽器。默認(rèn)為 True 除非 appModedevtools 選項 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.stdoutprocess.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
      其中一個 urlpathcontent 選擇是必要的膨蛮。
      參數(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 圖像的編碼可以是 base64binary萤悴。默認(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 等待時間 mousedownmouseup 以毫秒為單位的時間。默認(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: 獲取對話框類型汹族。類型有:alertbeforeunload其兴,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())
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子箫措,更是在濱河造成了極大的恐慌缭黔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒂破,死亡現(xiàn)場離奇詭異馏谨,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)附迷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門惧互,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人喇伯,你說我怎么就攤上這事喊儡。” “怎么了稻据?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵艾猜,是天一觀的道長。 經(jīng)常有香客問我捻悯,道長匆赃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任今缚,我火速辦了婚禮算柳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘姓言。我一直安慰自己瞬项,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布何荚。 她就那樣靜靜地躺著囱淋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪餐塘。 梳的紋絲不亂的頭發(fā)上妥衣,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天,我揣著相機(jī)與錄音唠倦,去河邊找鬼称鳞。 笑死,一個胖子當(dāng)著我的面吹牛稠鼻,可吹牛的內(nèi)容都是我干的冈止。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼候齿,長吁一口氣:“原來是場噩夢啊……” “哼熙暴!你這毒婦竟也來了闺属?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤周霉,失蹤者是張志新(化名)和其女友劉穎掂器,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俱箱,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡国瓮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了狞谱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乃摹。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖跟衅,靈堂內(nèi)的尸體忽然破棺而出孵睬,到底是詐尸還是另有隱情,我是刑警寧澤伶跷,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布掰读,位于F島的核電站,受9級特大地震影響叭莫,放射性物質(zhì)發(fā)生泄漏蹈集。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一食寡、第九天 我趴在偏房一處隱蔽的房頂上張望雾狈。 院中可真熱鬧廓潜,春花似錦抵皱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至悼院,卻和暖如春伤为,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背据途。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工绞愚, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人颖医。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓位衩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親熔萧。 傳聞我的和親對象是個殘疾皇子糖驴,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容

  • Page類是pyppeteer的核心僚祷,其價值就猶如selenium的driver,具體的頁面操作都在Page類上贮缕;...
    Python之戰(zhàn)閱讀 2,005評論 0 1
  • 參考:爬蟲神器 Pyppeteer 介紹及爬取某商城實戰(zhàn)Pyppeteer:比selenium更高效的爬蟲界的新神...
    BeautifulSoulpy閱讀 39,009評論 0 10
  • 如果大家對 Python 爬蟲有所了解的話辙谜,想必你應(yīng)該聽說過 Selenium 這個庫,這實際上是一個自動化測試工...
    g_ices閱讀 696評論 0 1
  • 前言 前段時間因為有任務(wù)感昼,需要四個電商(京東装哆、淘寶、天貓定嗓、拼多多)的數(shù)據(jù)烂琴。而其中京東的沒什么反爬,基本是隨便抓蜕乡。拼...
    生信師姐閱讀 984評論 0 2
  • 重要:因為同步公號的文章格式很難保證奸绷,所以后面文章選擇性在其他平臺同步,歡迎移步公眾號(Python之戰(zhàn)),每日更...
    Python之戰(zhàn)閱讀 8,152評論 0 1