[第 11 屆 iT 邦幫忙鐵人賽] Day 05 : 先來當個爬蟲

Chao-Hsuan Ke
小小實驗室
Published in
3 min readAug 9, 2019

前面提到了我們要使用 PTT 的文章當作資料集,所以今天就來教大家怎麼當個爬蟲抓資料。

相信大家直接 Google “文章爬蟲”會找到許多教學文件,也有許多現有的程式碼可以使用。為了加速開發的時間,既然有巨人的肩膀可以站,那我們就直接站在巨人的肩膀比較快 (就是說我自己懶得寫程式啦,拿別人的code比較快)。我拿了 jwlin 的 PTT網路版爬蟲來用。這是 Python 寫的,若沒有安裝再請自行安裝一下。jwlin 在README上面寫了一個範例,還算蠻簡單易懂:

python crawler.py -b 看板名稱 -i 起始索引 結束索引

其中的 看板名稱 就是要抓 PTT 的那個版,在此我們設定是 “Stock”。在 PTT網路版的部分是以每 20 篇當作一個分頁,第一篇文章的起始索引就是從 0 開始,由於目前總共有100,294篇 (2019/08/09 18:20:00 截止),如果要抓全部的文章,那結束索引就會是 5015,所以我們只要針對擷取文章的code執行如下,就可以把PTT上的文章全部抓下來了。

python crawler.py -b Stock -i 0 5015

當然,如果你只想抓特定範圍的資料,那就把“起始索引”和“結束索引”的數值更改一下就好。但要注意一下,因為索引的編號跟日期完全沒有關係,所以如果你要抓特定日期的資料下來,那就要慢慢試一下該日期在哪個索引編號內,當然,這會花上一些時間,但其實抓久了就慢慢可以知道日期大概介於在哪些範圍了。

抓下來的檔案是Json格式,如下圖所示:

其中包含了這些資料 :

  1. article_id : PTT給該篇文章的單一代號
  2. article_title:該篇文章標題
  3. author:該篇文章作者名
  4. board:版名
  5. content:內文
  6. date:發表時間
  7. ip:作者發表文章的IP
  8. message_count:推文數量

再下一篇我們會說明要怎麼截取資料初來,今天只要大家可以把文章先抓回來就好。

當開始執行後,每抓好 20 篇文章後會儲存一個編號的 JSON 檔在放crawler.py 的資料夾內,例如 Stock_1000.json。這邊我們已經先抓了到2019/07/02 的文章,都在放我的 git 上,如果不想自己花時間去抓檔案的各位,可以直接從這裡下載。

https://github.com/deternan/DataSet

免責聲明:本文章提到的股市指數與說明皆為他人撰寫文章內容,包括:選股條件,買入條件,賣出條件和風險控制參數,只適用於文章內的解釋與說明,此提示及建議內容僅供參考之用,並不構成投資研究、認購、招攬或邀約任何人士投資任何投資產品或交易策略,亦不應視為投資建議。

Previous

Next

--

--

Chao-Hsuan Ke
小小實驗室

永遠熱愛自己的工作,總是找一堆事把自己的時間塞滿。喜歡接觸不同領域,像是 歷史、文化、金融和公共政策 等議題,期許著自己會什麼就分享什麼。