pyppeteer -- python版本的puppeteer,一個強大的chronium headless瀏覽器API
在福海等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設計 網(wǎng)站設計制作按需求定制開發(fā),公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站設計,全網(wǎng)營銷推廣,外貿網(wǎng)站制作,福海網(wǎng)站建設費用合理。
最近搞天貓用了一波兒,記錄一下。
先上文檔:?https://miyakogi.github.io/pyppeteer/
舉個最簡單的例子入門一下:
比如打開百度,然后截圖
下面說一些小技巧:
1、啟動參數(shù)
注意:同一個用戶目錄(userDataDir)不能被兩個chrome進程使用,如果你要多開,記得分別指定用戶目錄。否則會報編碼錯誤。
2、設置viewport
自動獲取當前屏幕大小并設置viewport
3、導出或加載cookie
4、選擇器
讓人極度舒適的一個特性:
使用 page.querySelector如果沒有找到指定的對象,則返回None,而不是拋出異常。不管規(guī)范不規(guī)范,反正比selenium爽多了。
5、hook
在頁面開始加載前注入js代碼,例如修改掉webdriver屬性,讓天貓檢測不到
6、關于各種事件的isTrusted
這個js事件屬性,用js是無法偽造的,但是用pyppeteer發(fā)生的各種操作所觸發(fā)的事件,是完全真實的,這個歸功于CDP吧。
7、卡死
如果在操作過程中不小心點擊了某個a標簽,導致瀏覽器新打開了一個標簽頁,而你的代碼還在傻乎乎的使用之前的page對象做操作的時候,整個進程就卡住了
沒有超時、沒有異常、就是完全的不知道在干啥
當你把新開的標簽頁手動關閉后,一切就恢復原樣。
tips:
避免這種情況的發(fā)生,其實也很簡單,就是在每個可能誤操作點擊導致新開標簽頁的行為后面都強制關閉一下其他標簽頁:
比如: