Udemy 免費課程訂閱 - iT 邦幫忙

文章推薦指數: 80 %
投票人數:10人

那麼我們今天的就來試試看有沒有什麼方式能夠取得frees coupon course,然後做一個訂閱限時免費課程的服務。

實際探訪. 我們先google 看看「udemy free coupon」,當然就會 ... 2018iT邦幫忙鐵人賽 DAY 30 5 SoftwareDevelopment 爬蟲始終來自於墮性系列第 34篇 Udemy免費課程訂閱 2018鐵人賽 網路爬蟲 Howard 2018-01-0200:00:077058瀏覽 定義目標 我很喜歡Soft&Share特價課程與學習資訊分享這個社團,因為他分享了許多免費學習的資訊,很多課程都令人愛不釋手。

而我們到Udemy的搜尋裡面,也能輕易地找出許多免費課程,不過這個跟Soft&Share社團所分享的不太一樣,因為社團所分享的是包含透過coupon所拿到的免費課程。

那麼我們今天的就來試試看有沒有什麼方式能夠取得freescouponcourse,然後做一個訂閱限時免費課程的服務。

實際探訪 我們先google看看「udemyfreecoupon」,當然就會看到許多coupon網站,在查看結果的過程中眼尖發現到reddit這個國外最大的論壇。

若說台灣資訊流竄最快的肯定是ptt,那麼在國外肯定就是reddit,那麼我們就去reddit看看有沒有適合的看板。

直接搜尋udemy會看到三個看板,第一個比較像是Udemy的討論論壇,而第二、三個就是我們想要的freecouponcourse。

點進去看看,沒錯,就是我們想要的,若我們能夠定期的取得最新的,我們就可以將著個服務建立起來。

接著繼續觀察每一個項目,很幸運的,每個dom都有包含timestamp,也就是說,我們能夠制定我們的cronjob,在間隔一段時間抓取這個時間區間內的新文章,如此一來應該就能完成訂閱服務。

分解研究 若要抓取所有區間內的新文章,我們需要做以下兩個步驟: 抓取文章列表 篩選時間內的文章 抓取文章列表 我們先用postman對看板的url抓看看,確定是可以拿到列表,然後用select選取看看,確認是可以把文章列表抓出來。

篩選時間內的文章 接下來來對文章列表做篩選,我們先假設爬蟲三天執行一次,所以預設先抓取三天內的文章,試著filter看看,確定是可以篩選出時間內的文章。

實作程式碼 getNewPostfunction 我們先來撰寫取得文章列表的function,接受一個url參數,用request取得列表,整理一下資料,再做timestampfilter,最後用promiseresolve我們取得的文章。

另外我們也設定一下constPERIOD,方便我們未來做調整。

constPERIOD=60*60*24*3*1000; functiongetNewPost(url){ returnnewPromise(done=>{ request(url,(err,res,body)=>{ var$=cheerio.load(body) varposts=$('.thing').map((index,obj)=>{ return{ title:$(obj).find('a.title').text(), link:$(obj).find('a.title').attr('href'), timestamp:$(obj).attr('data-timestamp'), } }).get().filter((obj)=>{ returnobj.timestamp>(Date.now()-PERIOD) }) done(posts) }) }) } 積木組合 因為有兩個看板,所以我們用promise.all來取得時間區間內的文章列表,然後在做arrayflat,這樣就完成了。

Promise.all([ getNewPost('https://www.reddit.com/r/udemyfreecourses/'), getNewPost('https://www.reddit.com/r/udemyfreebies/') ]).then(results=>{ console.log([].concat.apply([],results)); }); 完整程式碼 constrequest=require('request'); constcheerio=require('cheerio'); constPERIOD=60*60*24*3*1000; Promise.all([ getNewPost('https://www.reddit.com/r/udemyfreecourses/'), getNewPost('https://www.reddit.com/r/udemyfreebies/') ]).then(results=>{ console.log([].concat.apply([],results)); }); functiongetNewPost(url){ returnnewPromise(done=>{ request(url,(err,res,body)=>{ var$=cheerio.load(body) varposts=$('.thing').map((index,obj)=>{ return{ title:$(obj).find('a.title').text(), link:$(obj).find('a.title').attr('href'), timestamp:$(obj).attr('data-timestamp'), } }).get().filter((obj)=>{ returnobj.timestamp>(Date.now()-PERIOD) }) done(posts) }) }) } 衍伸應用 許多的資訊都是藉由論壇或社群所討論出來,但這類的資料通常都缺乏整理,所以幾乎都是散亂的,而我們可以利用爬蟲做定期整理,就有機會將這些討論串變成很有用的資料。

除了把文章列表拿取出來以外,我們還可以對文章內容做格式整理,或者在關鍵字訂閱,這樣也能夠做成很有用的服務。

若更近一步,我們可以自動將這些課程加入我們的Udemy的帳號,那就能做到完全自動化訂閱限時免費的課程。

留言3 追蹤 檢舉 上一篇 NBA新聞爬取 系列文 爬蟲始終來自於墮性 共34篇 目錄 RSS系列文 訂閱系列文 398人訂閱 30 改造台鐵訂票全自動 31 使用模擬器做台鐵訂票爬蟲 32 NBA即時比分 33 NBA新聞爬取 34 Udemy免費課程訂閱 完整目錄 3則留言 舊至新 新至舊 最高Like數 0 john_old_man iT邦新手5級‧ 2019-05-0907:40:03 大大的爬蟲教學看下來 發現比sourcecode更寶貴的是 文章融入了 如何發現問題—>解決問題的思維 受益良多 回應 1 檢舉 allenchen iT邦新手4級‧ 2019-06-1316:00:53 檢舉 Goodjob謝謝分享 Goodjob謝謝分享 修改 登入發表回應 0 silenus iT邦新手5級‧ 2019-11-2914:14:10 後續補充: 由於reddit網站更新改版的緣故,需將以下程式碼 Promise.all([ getNewPost('https://www.reddit.com/r/udemyfreecourses/'), getNewPost('https://www.reddit.com/r/udemyfreebies/') ]).then(results=>{ console.log([].concat.apply([],results)); }); 改為 Promise.all([ getNewPost('https://old.reddit.com/r/udemyfreecourses/'), getNewPost('https://old.reddit.com/r/udemyfreebies/') ]).then(results=>{ console.log([].concat.apply([],results)); }); 方能爬得到資料哦! 回應 檢舉 登入發表回應 0 阿展展展 iT邦好手1級‧ 2020-02-1808:45:11 我要成為爬蟲王!!! 回應 檢舉 登入發表回應 我要留言 立即登入留言 iT邦幫忙鐵人賽 參賽組數 1087組 團體組數 52組 累計文章數 20462篇 完賽人數 572人 鐵人賽最新文章 Gitpush 盤點清查與檢測掃描-安全性檢測 完賽心得 2021/11/28更新 C#入门之正则表达式匹配并替换 [Bonus系列]-來看看ReactRouterv6有什麼新功能?和v5有哪些地方不同? 2021-11-24盤勢分析 做不好資金控管,一檔大賠,獲利全吐 DevFest'21Hsinchu&Taichung議程錄影上線啦! 建立第一個單元測試(golang)-2(Day21) 前往鐵人賽 技術推廣專區 [Day2]抓取每日收盤價 [Day1]基本工具安裝 利用python取得永豐銀行API的Nonce [Day03]tinyML開發板介紹 永豐金融API測試員 [Day01]在享受tinyML這道美食之前 [Day3]使用ta-lib製作指標 [Day4]函數打包與買進持有報酬率試算 計算API所需要的參數:HashID 計算API所需要的參數:IV 前往鐵人賽 熱門問題 重建置網路架構 Linux初學者_自己學習 哪裡有主機板維修的課程? 因為被'其他使用者'編輯而被鎖定了的問題請教 C槽突然變紅條容量不足,是中毒了? 住宅網路架構 想問一下這兩行指令的意思是什麼看不太懂 求救求救!python!! 固定ip設定問題 sql查詢時大括弧的意思 IT邦幫忙 站方公告 2021iThome鐵人賽精彩文章超過2萬篇,預計12月6日中午揭曉本屆獲勝鐵人 熱門tag 看更多 13th鐵人賽 12th鐵人賽 11th鐵人賽 鐵人賽 2019鐵人賽 2018鐵人賽 javascript 2017鐵人賽 windows php python windowsserver linux c# 程式設計 資訊安全 css vue.js sql 分享 熱門回答 哪裡有主機板維修的課程? 固定ip設定問題 重建置網路架構 C槽突然變紅條容量不足,是中毒了? easyflow無法更新公告欄 Linux初學者_自己學習 win10執行vmware+ubuntu會遲鈍 住宅網路架構 請問大神msSQL可以讀取phpldapadmin的使用者嗎? pythonlist問題 熱門文章 完賽心得 Redis不支援ThreadSafe 2021/11/28更新 徵:前端/後端/全端工程師 夜間模式真的對眼睛比較好嗎?詳細整理(下) Python&GCP學習筆記_GmailAPI操作 新手 HTML筆記(02)-HTML、CSS、Javascript? 盤點清查與檢測掃描-安全性檢測 RESTfulAPI 一週點數排行 更多點數排行 海綿寶寶(antijava) ㊣浩瀚星空㊣(yoching) ccenjor(ccenjor) raytracy(raytracy) mathewkl(mathewkl) japhenchen(japhenchen) 純真的人(jer5173) 一級屠豬士(hitomitanaka) by2048(by2048) juck30808(juck30808) × At 輸入對方的帳號或暱稱 Loading 找不到結果。

標記 {{result.label}} {{result.account}} 關閉



請為這篇文章評分?