iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
2
AI & Data

人工智慧 vs.工人智慧系列 第 5

Day 05 : 先來當個爬蟲

  • 分享至 

  • xImage
  •  

前面提到了我們要使用 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 格式,如下圖所示:

https://ithelp.ithome.com.tw/upload/images/20190906/20119726DTyAZy79zF.png

其中包含了這些資料 :

  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

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


上一篇
Day 04:Let’s GO
下一篇
Day 06:資料處理
系列文
人工智慧 vs.工人智慧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
erika
iT邦新手 5 級 ‧ 2019-09-06 09:28:30

这里有一个视频教程,讲如何用爬虫软件,Octoparse扒取新闻文章信息。应该也可以应用在其他页面的。https://www.youtube.com/watch?v=VOoPev_GzUM&t=38s

我要留言

立即登入留言