1. 程式人生 > >基於http協議的批量教務系統圖片爬取

基於http協議的批量教務系統圖片爬取

學校教務系統網頁圖片批量爬取

       寒假放假回家,複習考研卻很迷茫,不知道從哪裡開始,翻書看到基於http協議的網路程式設計,一直對網路爬蟲很趕興趣,只是基礎很差,課堂上學到的東西很少,就想著利用java中的一些知識,結合http網路層協議。批量的爬取學校教務管理系統上的個人登記照,在斷斷續續的摸索幾天的java爬蟲後,本來是想著利用httpclient+jsoup框架來一方面的用httpclient模擬使用者登入,獲取使用者登陸後等到的HTML網頁原始碼,再來通過jsoup來解析網頁原始碼,獲取到圖片的URL地址,再來通過URLConnection來下載圖片,批量下載可才採用for迴圈進行URL地址的變換,用執行緒來休眠式的獲取圖片,不至於導致CPU過於緊張。

       特別要提到的是,在查詢網路資料的過程中,瞭解到為了防止站長對我方爬取資料時的ip地址進行拉黑,可以採用網上的免費的代理伺服器,進行爬取。

開始簡單的專案(採用另一種簡單的方式,不知httpclient+jsoup)...

專案需求

1.通過登入個人的使用者管理系統來獲取個人圖片的URL地址;

2分析URL地址以及和自己學號、年級、班級的命名關係

3.通過URLConnection連結URL地址,來獲取圖片,將獲取的圖片轉化為binary(二進位制),下載到本地。設計到自定義的函式有:

a.根據地址獲得資料的位元組流( getImageFromNetByUrl(String strUrl)

b.從輸入流中獲取資料 (readInputStream(InputStream inStream)

c.將圖片寫入到磁碟(writeImageToDisk(byte[] img, String fileName)

具體實現

1.登入XXX學校教務系統,獲取個人圖片的URL地址連結,防止錯誤,可在瀏覽器中自行嘗試

2.獲取URL之後後,開始新建java project

具體函式為:

a.根據地址獲得資料的位元組流( getImageFromNetByUrl(String strUrl)

 

b.從輸入流中獲取資料 (readInputStream(InputStream inStream)


c.將圖片寫入到磁碟(writeImageToDisk(byte[] img, String fileName)

   

專案變數以及函式的呼叫


以上原始碼由個人開發,涉及到教務系統上的學生圖片,不方便將原始碼全部丟擲,可作為學習,後期在Android  中還可進一步優化功能。以下是原始碼成功後隨便爬取的某學院某專業的全班學生的大學登記照,(啊哈哈哈哈, 加油,爬蟲!)


以上圖片爬取部落格,不得私自轉載,後果自負,同志們...

2018年1月24日