當技術為你的生活帶來便利,他才有存在的意義
學習爬蟲只是一個過程,我們的目標是希望能靠這些數據給我們帶來便利
,所以今天也分享一些思路給大家1.1 優化分成哪些面向?
1.2 優化執行效率及穩定度
1.3 背景執行並減少記憶體的消耗
昨天我們已經完成爬蟲所需要的功能了,下一步要思考的是如何優化
前面【Day13】refactor-重構程式碼,讓合作夥伴對你比讚在討論如何讓你在開發上更有效率,原則上不影響輸出的結果;而今天討論的優化是一個多面向的問題,我把他區分成顯性及隱性
兩種:
肉眼可見
電腦變順
了(不過他們通常不會聯想到是程式優化了)
優化是一條沒有盡頭的路,上面我只是提了幾個常見要注意的點而已,接下來我們就來實際優化現在的爬蟲吧~
遇到的問題
判斷造成的原因
網路速度太慢
,造成網頁過了 driver.wait 的等待時間後依舊還沒完成載入充滿圖片的頁面
,載入這些資源時消耗太多流量優化的方式
因為本專案爬蟲所分析的內容都跟圖片無關,所以只要不載入這些資源
就有以下好處:
想要知道如何不載入圖片,你可以在 Google 搜尋 selenium chrome參數 ,有很多熱心的大神已經幫你整理好常用的參數了
不載入圖片
的參數
options.addArguments('blink-settings=imagesEnabled=false')//不加載圖片提高效率
加上這段程式後,在專案資料夾的終端機(Terminal)執行指令 yarn start ,便可以很明顯的感受到網頁載入速度變快很多,並且所有圖片都沒有載入
(下圖)干擾到使用者的日常工作
chrome 吃太多記憶體
讓瀏覽器在背景執行不但不會干擾使用者工作更能減少記憶體的浪費
不打開瀏覽器視窗
的參數如下
options.addArguments('--headless')//瀏覽器不提供頁面觀看,linux下如果系統是純文字介面不加這條會啓動失敗
options.addArguments('--log-level=3')//這個option可以讓你跟headless時網頁端的console.log說掰掰
//下面參數能提升爬蟲穩定性
options.addArguments('--disable-dev-shm-usage')//使用共享內存RAM
options.addArguments('--disable-gpu')//規避部分chrome gpu bug
設定完這些後,在專案資料夾的終端機(Terminal)執行指令 yarn start ,就會發現爬蟲變成背景執行,並且電腦順暢許多
原本我打算用兩天的文章來教取得當日貼文數量的方法,但文章寫完後就刪掉了,因為讀者完全有能力用這幾天所教的技術自行實踐這項功能;我希望用這30天分享更多不同的技術及有幫助的觀念
授人以魚不如授人以漁
使用模擬瀏覽器來爬蟲我認為是最符合初學者的,你不用去分析複雜的 api,去猜裡面的參數是甚麼意義
你需要做的只是把你平常操作的流程用程式的方式來替你做一遍,然後抓取你所需要的資訊
我寫的文章只是爬蟲的技巧的冰山一角,但只要有了開頭以及研究的方向我相信你是有能力獨立完成其他網頁的爬蟲
現在人工智慧流行,大數據當道,爬蟲是取得大數據的方法之一,你能透過這些數據分析的東西太多了,我在這裡簡單舉例:
隨便舉的例子都能獨立出來都能成為一篇論文或是商品,爬蟲是一個很強的武器,但這把武器的強度要看使用者如何發揮他
,我想會看這系列教學文章的讀者心中都有想要爬蟲的目標,開始動手實作吧!
再次提醒,技術沒有善惡,人的使用方式才會有善惡,希望這份技術可以幫大家節省時間以及避免重工;如果你把它拿來盜取智慧財產、個人檔案及機敏資訊請自行負擔後續法律責任
筆者碎碎念
我希望看完文章的讀者能夠吸收到問題思考的方式,不要只是單純的 copy & paste ,這樣對技術長期來講是在累積負債
如果你是程式的新手,你可以透過修改一些參數來看看結果會有什麼樣的變化,少加哪些參數是不是真的會有錯誤
不要害怕犯錯,因為學習程式的路上幾乎不存在一條完美的道路
你現在滿意的程式往往在幾個月後你會覺得當時怎麼寫的這麼爛
當你誕生出這個想法的時候就是成長了
關於使用網頁爬蟲的技術文章就分享到今天,接下來我們要來研究 爬蟲資料如何儲存
,敬請期待
免責聲明:文章技術僅抓取公開數據作爲研究,任何組織和個人不得以此技術盜取他人智慧財產、造成網站損害,否則一切后果由該組織或個人承擔。作者不承擔任何法律及連帶責任!
我在 Medium 平台 也分享了許多技術文章
❝ 主題涵蓋「MIS & DEVOPS、資料庫、前端、後端、MICROSFT 365、GOOGLE 雲端應用、個人研究」希望可以幫助遇到相同問題、想自我成長的人。❞
在許多人的幫助下,本系列文章已出版成書,並添加了新的篇章與細節補充:
- 加入更多實務經驗,用完整的開發流程讓讀者了解專案每個階段要注意的事項
- 將爬蟲的步驟與技巧做更詳細的說明,讓讀者可以輕鬆入門
- 調整專案架構
- 優化爬蟲程式,以更廣的視角來擷取網頁資訊
- 增加資料驗證、錯誤通知等功能,讓爬蟲執行遇到問題時可以第一時間通知使用者
- 排程部分改用 node-schedule & pm2 的組合,讓讀者可以輕鬆管理專案程序並獲得更精確的 log 資訊
有興趣的朋友可以到天瓏書局選購,感謝大家的支持。
購書連結:https://www.tenlong.com.tw/products/9789864348008