November 18, 2016

ptt 爬蟲 with Python

即便經過十幾年,世界早已從無名小站經過Facebook,正演進到通訊軟體與chat bot的世界。台大批踢踢仍是台灣網路世界的熱門中樞,什麼最新最快最即時的資訊哪裡找不到,還是到批踢踢問鄉民最快。因應新的世界,也有好多好用的批踢踢手機app可以使用,滿足大家對資訊的需求。

好吧,廢話講太多(下略三千字)。今天要玩的是批踢踢的文章爬蟲。

Github上相關的程式碼很多,根據Readme挑了一個看起來合適的切入點。 https://github.com/jwlin/ptt-web-crawler 嗯,是Python。

在目前的Mac版本(10.12)已有內建Python2.7。直接跑起來卻一直出現error。胡亂安裝一陣相關套件,卻還是一直回報pyOpenssl相關錯誤。才知道原來在本機跑python還需要設定Virtual Environment才行。

根據說明,virtual environment是用來保持各專案的獨立性。解決了A專案需要版本 1.x 但 B專案需要 4.x 的這類問題。

可透過pip安裝。
$ pip install virtualenv


基本使用:
1. 在專案資料夾中建立virtual environment
$ cd my_project_folder
$ virtualenv venv

以上動作會在該資料夾中建立一個 venv 的資料夾。裡面會放Python的相關執行檔與一份用來安裝其他library的pip library。(venv也可使用其他名稱)(這資料夾在mac finder中看不到,是隱藏資料夾。)
也可以指定python interpreter
$ virtualenv -p /usr/bin/python2.7 venv

2. 使用以下指令啟動virtual env
$ source venv/bin/activate

當virtual env啟動時,會出現在提示符號右邊如:
(venv)Your-Computer:your_project UserName$

啟動後,任何使用pip安裝的套件會裝在venv中。
$ pip install requests

3. 如要關閉virtual environment
$ deactivate


接下來就可以開始玩囉~

基本上照說明執行就可以動了。以下依需求fork到我的Github上做了一點小修改。

原本設定參數 -i [起始頁] [終止頁] ,終止頁若設-1代表爬到最後。
不過因為我只需要爬最新幾頁,所以修改參數,若起始頁設定-1,則會往前數n頁再爬出來,參數這樣設 -i -1 n,就會爬該版的最後n頁文章內容。

目前大概這樣,有興趣的朋友可以到Github下載下來玩。

0 Comments: