Udemy 免費課程訂閱 - iT 邦幫忙
文章推薦指數: 80 %
那麼我們今天的就來試試看有沒有什麼方式能夠取得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}}
關閉
延伸文章資訊
- 1(2021 年11 月)Udemy 免費課程優惠碼- 付費課程限時折扣0 ...
Udemy 免費學習Coupon 折價券- 100% Free 免費線上課程 ... 同時這些Udemy 課程都幫大家爭取到了免費的折價券使用,免費優惠券的代碼已經加在課程連結當中了,要使用 ...
- 2Udemy 免费资源中心:查找免费在线课程
免费在线课程,助您实现目标. 想要学习新技能?您是否想尝试一种爱好?请到Udemy 来,它是全球领先的在线教学平台。 如果您刚刚开始在线学习,但不确定从哪里开始,您 ...
- 3線上課程Udemy 也能不花半毛錢? 不藏私!教你免費購入原價 ...
除了上面這種特殊節日的折扣以外,我自己還意外發現加入「Udemy Coupon」的FB 社團非常有幫助,這個社團隨時都會釋出完全免費的Coupon Link ,而且幾乎 ...
- 4Udemy 免費課程訂閱 - iT 邦幫忙
那麼我們今天的就來試試看有沒有什麼方式能夠取得frees coupon course,然後做一個訂閱限時免費課程的服務。 實際探訪. 我們先google 看看「udemy free coupon...
- 5Udemy免費課程
Udemy免費課程▷➡️Undemy得益於該平台自成立以來提供的課程。 並由於受到了廣泛的歡迎.