使用Scrapy使用表單登入帳號與抓取資料,儲存到Mysql

目前已經無法使用,zerojudge更新登入系統的機制,但可用於其他帳號密碼登入的網站。

使用Scrapy使用表單登入帳號與抓取資料,儲存到Mysql

本程式完整程式碼在GitHub,網址如下

https://github.com/jang0820/scrapy/tree/master/zj_mysql

Step0)建立資料庫zj,新增資料表ac,資料表ac的SQL如下。

Step1)編輯zj\spiders\zero.py,scrapy使用start_urls的網址抓取資料,自動呼叫函式parse登入zerojudge,記得要使用自己的zerojudge帳號與密碼登入,登入後因為第20行callback的設定,指定呼叫函式parse_user,函式parse_user讀取指定使用者的狀態網頁,函式parse_user最後呼叫函式parse_user_process(第25行callback的設定),函式parse_user_process分析網頁獲得帳號與AC題數,將資料儲存到item物件,scrapy經由設定會將item交給pipeline處理,在pipeline撰寫程式將資料加到Mysql資料庫

Step2)修改zj\item.py,建立資料接收的資料欄位

Step3)修改zj\pipelines.py,將item插入到資料庫

Step4)本專案設定檔在zj\settings.py,新增資料庫設定,設定抓取網頁的延遲時間,啟用ITEM_PIPELINES才會將item儲存到Mysql資料庫

Step5)如果從GitHub下載程式碼,在zj_mysql資料夾執行指令「scrapy crawl zero」就可以登入zerojudge查詢指定使用者的AC題數,最後將資料加到Mysql資料庫zj的資料表ac中。