pyppeteer 實在是有點坑,坑太多了,填不完。node
使用 pyppeteer 碰到的錯誤
-
pyppeteer.errors.ElementHandleError: Error: failed to find element matching selector ".btn_ok"
python我使用了下面的代碼後出現的:爲了實現檢測元素是否存在,存在則程序結束,不存在則重試web
btn_ok = await page.Jeval('.btn_ok', 'node => node.style')
瀏覽器解決辦法:微信
btn_ok = await page.querySelector('[class="nc_iconfont btn_ok"]')
websocket可是使用這個以後,當滑動失敗以後,重現刷新滑動驗證碼以後,又會出現下面的錯誤。scrapy
更新(2020-01-20):socket
以前的理解錯誤了,這個根本緣由是執行關閉瀏覽器
await browser.close()
的時候沒有權限刪除用戶的瀏覽數據。編輯器解決辦法:spa
定義瀏覽器的時候設置參數
'userDataDir': r'D:\temporary'
,指定一個用戶能夠執行的目錄,這樣的話就能夠了。可是這樣的話,至關於保存了用戶的瀏覽數據。
可能又會碰到這麼個錯誤,事件循環打開瀏覽器後,並無執行,直接返回結果。
看了一下文檔,調用
createIncogniteBrowserContext()
直接打開一個無痕瀏覽器。這樣就爽多了關閉的時候須要注意分開關閉,無痕關閉,正常打開的瀏覽器也須要關閉。
-
pyppeteer.errors.NetworkError: Protocol Error (Runtime.callFunctionOn): Session closed. Most likely the page has been closed.
![](http://static.javashuo.com/static/loading.gif)
解決辦法:這是因爲庫自己的問題。pyppeteer 庫的問題。
![](http://static.javashuo.com/static/loading.gif)
具體可參考 天貓淘寶知乎爬蟲神器 -- Pyppeteer
也能夠下降 websockets 的版本,改成 6.0 的版本
pip install websockets==6.0
這樣問題就會少不少
這個文章會一直更新,碰到了就會更新,未完待續。。。
本文分享自微信公衆號 - Python爬蟲scrapy(python_scrapy)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。