使用 pyppeteer 碰到的錯誤

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.

解決辦法:這是因爲庫自己的問題。pyppeteer 庫的問題。

具體可參考 天貓淘寶知乎爬蟲神器 -- Pyppeteer

也能夠下降 websockets 的版本,改成 6.0 的版本

pip install websockets==6.0

這樣問題就會少不少

這個文章會一直更新,碰到了就會更新,未完待續。。。


本文分享自微信公衆號 - Python爬蟲scrapy(python_scrapy)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索