了不得的 Deno:帶你極速獲取各大平臺今日熱榜

摘要:Deno 是一個 JavaScript/TypeScript 的運行時,默認使用安全環境執行代碼,有着卓越的開發體驗。

有人的地方就有江湖,有江湖的地方就有爭論。前些天,繼《[譯]爲何現在 Deno 正全面取代 Node.js》以後,又有了《【譯】Deno 已經死了嗎?》,也許這即是江湖。說回標題」Deno 在手,天下我有「,其實 Deno 換成Charj、NodeJS、Java 等其餘名詞都同樣,畢竟只是標題罷了,可能真正不同的是使用她的愉悅感。對我而言,能給我帶來 Copy 的快感,即是極好的!java

源起

本週,被@justjavac 巨佬的各個熱搜榜項目吸睛了,抱着對技術的三分鐘熱情以及對優秀代碼的學習心切,我又開始了新的代碼拷貝旅程。二話不說,先git clone一頓操做猛如虎,定睛一看,好像這幾個項目的實現都差很少,也請教了巨佬本尊肯定實現是同樣的,但爲毛要開 4 個 repo 呢?也許這就是單一職責原則吧。而後,我尋思着能不能整合一下再加點別的熱搜榜就能變成trending in one,是否是很棒的想法,哈哈哈哈。接下來,我還會對今日頭條下手--」得熱搜者得天下,熱搜榜拿來吧!「,三下除二拿到了頭條熱搜榜(儘管須要輸入圖片驗證碼)。最後就是資源整合,不過發現 README.md 爆了,看來單例仍是有單例的好。git

即刻獲取今日熱搜榜 ➡️ trending-in-onegithub

剖析

關於如何實現熱搜彙總,若是不看源碼,我也只能想到調用相關熱搜榜的接口來獲取,可別人的接口又怎麼會給你隨意調用呢?經過拜讀大佬的源碼,我看到了經過正則匹配 DOM 節點獲取對應的標題連接之類的,我看到了經過註釋定位包裹的內容並進行替換,我看到了 JavaScript 如何處理重複的數據,我看到了如何藉助 github action 實現 Deno 應用的構建……儘管只是一個微不足道的項目,卻一應俱全,做者將各類技巧搭配自如、靈活運用,簡直是出神入化、登峯造極啊(PS:在我看來事實如此)。api

其實拋開語言和平臺,要想實現熱搜彙總榜,無非就是三步走:① 獲取數據 ② 處理數據 ③ 輸出數據。接下來從 Deno 的視角來詳細解說這三步是如何走的:安全

獲取數據

當咱們遇到一個需求,可能要從它的本質出發,好比要實現熱搜彙總,首先咱們就須要各大平臺的熱搜數據,現在日頭條熱搜榜、知乎熱門視頻、知乎熱門話題、知識熱門搜索、微博熱門搜索等等,怎麼獲取呢?常規的手段就是框按 F12 看看 Network,實在不行試試抓包工具.好在「前人栽樹後人乘涼」,因而乎咱們便有了各平臺的接口,獲取數據豈不是信手沾來。ide

頭條熱榜:https://is-lq.snssdk.com/api/...工具

微博熱搜:https://s.weibo.com/top/summary學習

知乎熱門話題:https://www.zhihu.com/api/v3/...spa

知乎熱門視頻:https://www.zhihu.com/api/v3/...視頻

知乎熱搜: https://www.zhihu.com/api/v4/...

固然以上接口並不是永久有效,目前來看也只能是能用多久用多久了,若是您不知足於此,亦能夠試試Twitter、Medium 等等(PS:好人一輩子平安)。不過,上邊的接口中,微博熱搜特立獨行,她返回的是 HTML 須要用到正則匹配便可拿到熱搜標題和連接,正則可把我難住了:/

相關文章
相關標籤/搜索