iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 22
1
AI & Data

Puppeteer 簡單快速建立自己的 Nodejs 爬蟲系列 第 22

Day 22 Puppeteer處理lazy load, SSR, 反爬蟲防禦, 高效地爬大量數據

在這邊回答marlin12之前提出的5個問題,先回答4個


  1. lazy load

    lazy load就是指惰性載入,只要頁面不到那部份,那部份的頁面就不會載入。
    lazy load問題比較是會在非內建瀏覽器的爬蟲容易遇到的。
    像是基本的request等等,會無法應對。
    在Puppeteer這裡不會有這些問題
    再這裡提供2方法,可以讓滑鼠或網頁到指定位置,就會載入。

    當然透過鍵盤等等其他方法也是行的通,大家可以去嘗試看看


  1. SSR(server side render)

    這也是非內建瀏覽器會遇到的問題,會要等到使用者或伺服器端之後操作或延遲載入,HTML才會出來。
    這裡也可以使用上面兩個方法解決
    再加上

    以上在 Frame 裡面也是找的到這幾個方法


  1. 反爬蟲防禦

    名單

    • IP的黑白名單
    • useragent
    • 驗證碼
    • SSR、lazy load

    針對反爬蟲防禦,上面那兩個方法都不錯,都可以有效減少爬蟲速度。
    除此之外還有針對IP的黑白名單、useragent、
    那目前最有效的方法就是

    驗證碼

    當然驗證碼也是可以透過機器學習、圖像辨識解決。
    雖然不能完全防禦,但能增加難度。

    簡而言之,正常的網站是不可能百分之百防禦爬蟲的。


  1. 高效地爬大量數據

    針對這問題,我只能提供思路。
    因為要高效率,就容易被爬蟲防禦。
    要反爬蟲防禦,就沒辦法高效率。

    效率
    基本request > 內建瀏覽器puppeteer
    無防禦機制 > 有防禦機制

    防禦機制就照著上面的名單下去一一解決,針對每個網站找到最佳解。


上一篇
Day 21 Puppeteer API 介紹 - class: SecurityDetails, Target, CDPSession, TimeoutError
下一篇
Day 23 爬蟲範例-中央社(練習使用typescript)
系列文
Puppeteer 簡單快速建立自己的 Nodejs 爬蟲25

1 則留言

1
marlin12
iT邦新手 3 級 ‧ 2018-10-23 22:18:36

感謝大大的回答
/images/emoticon/emoticon41.gif

henry.w iT邦新手 5 級‧ 2018-10-23 23:38:52 檢舉

也謝謝你的指教
如果有問題歡迎繼續提出
如果有寫的不好的地方還請你見諒:)

我要留言

立即登入留言