[問題] 記憶體不足

作者: cathy0610 (凱西)   2020-10-29 05:21:45
請問執行會對網頁重覆執行爬蟲的腳本
它在執行一段時間後
chrome瀏覽器就會顯示out of memory
程式就停止了
(電腦記憶體32g)
請問這個問題有辦法解決嗎?
(除了重啟瀏覽器,還有其他方法嗎?)
謝謝
作者: Hsins (翔)   2020-10-29 06:18:00
你的問題敘述沒頭沒尾的。純粹執行 Python 腳本通常是直接丟請求取東西回來,要嘛就是取頁面原始碼再透過 selector或 xpath 定位,又或是直接字串透過正則表達式做 parsing,這時的記憶體不足會是腳本可能有 memory leak 或者是讀入過量的資料。如果還需要開瀏覽器,通常是有需要加載 js 才會渲染頁面,要嘛 headless 要嘛 seleium,至少要交代一下吧?瀏覽器跳記憶體不足的原因有很多啊,你腳本是不是會一直開新分頁?又或者是要一直下拉載入新內容?還是其他?如果是開太多分頁或記憶體沒清,就去找文件看看那個方法可以調用去關分頁或者是清理瀏覽器的記憶體,然後在腳本裡呼叫。如果清了記憶體就不能爬了,那就找其他的爬法…搞不好是對方網站載入的 js 有沒寫好的東西一直堆上去…如果你需要爬的東西,是重啟瀏覽器之後直接運行腳本繼續爬也沒差,容錯率比較高的話。寫個腳本定期去殺掉進程,然後重啟會比較快速無腦
作者: kobe8112 (小B)   2020-10-29 09:10:00
有辦法解決,辦法就是把腳本內錯誤的程式碼修正
作者: stillcolor (鬼艾倫)   2020-10-29 10:11:00
一樓回答完了...下次發問記得多提供點資訊selenium沒開新分頁,應該就先往程式碼找看看
作者: aidansky0989 (alta)   2020-10-29 10:43:00
用Selenium爬,那可能會是有點消耗資源,因為開太多頁面
作者: stillcolor (鬼艾倫)   2020-10-29 11:19:00
之前碰到過開太多分頁,導致chrome記憶體爆炸,供參考
作者: jasonfghx (工人)   2020-11-01 19:29:00
se拼錯?

Links booklink

Contact Us: admin [ a t ] ucptt.com