最近在練習 Python,聽說 Python 當爬蟲不錯,因為 Dcard 最近有點紅,所以好奇想抓一下資料來看看。
原本想說直接一頁一頁爬下來就好,但是實作的時候會發現 Dcard 網站不是直接載入內容的,所以直接爬資料會得到空無一物的東西。
結果後來發現了學弟的這篇文章(Dcard 文章研究 (1) – 從 Dcard API 取得文章),馬上來實作看看。
用 https://www.dcard.tw/api/forum/all/ + 數字 可以抓版面所有文章。
得到 id 之後,再爬 https://www.dcard.tw/api/post/all/ + id 就可以得到文章內容了
例如我要抓 5 讚以上的文章,連續抓 3 頁:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import urllib2 import json post_id = [] post_links = [] for page in range(1, 4): url = "https://www.dcard.tw/api/forum/all/%d" % page data = urllib2.urlopen(url).read() data = json.loads(data) for post in data: if int(post['likeCount']) >= 5: post_links.append(post['id']) for post_id in post_links: post_url = u'https://www.dcard.tw/api/post/all/' + str(post_id) data = urllib2.urlopen(post_url).read() data = json.loads(data) content = data['version'][0]['content'] print content |
非常簡單就完成了。
發佈留言