日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

南通大学java期末_【Java爬虫】爬取南通大学教务处成绩

發布時間:2023/12/16 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 南通大学java期末_【Java爬虫】爬取南通大学教务处成绩 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

沒使用自動登錄,所以獲取是比較麻煩。。

1、http://jwgl.ntu.edu.cn/cjcx? ? 進入官網,進行賬號密碼登錄

2、點擊全部成績查詢(也一定要點進去,不然cookie不會返回值),按F12進入控制臺,找到Network,看到了ScoreAllData.aspx

首先看到Response中能看到返回的json數據,證明我們url找對了。。

接下來我們需要看request中的數據

可以看到form data中的start和limit,經過測試,我發現limit只有一個20的值,但是start是可以改變的,所以說換頁的時候需要更改start的數據。

還有cookie,登錄信息的數據是存在cookie里的(應該是),

獲取這個Id的值,用來使用jsoup爬取數據。

3、下面放代碼,再進行分析(代碼運行的時候,瀏覽器頁面不要關閉,因為是從cookie獲取的值,瀏覽器一關,cookie就 GG)

packagecom;importjava.io.IOException;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importorg.apache.commons.dbutils.QueryRunner;importorg.jsoup.Connection;importorg.jsoup.Jsoup;importorg.jsoup.nodes.Document;importcom.edu.utils.DruidUtils;importcom.google.gson.Gson;importcom.google.gson.reflect.TypeToken;importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;public classPost {public static void main(String[] args) throwsSQLException {

List scoreList = new ArrayList<>();try{

scoreList=post(scoreList);

QueryRunner qr= newQueryRunner(DruidUtils.getDatasource());

String sql= "insert into score values(?,?,?,?,?,?,?,?,?,?,?,?)";for(Score s:scoreList) {

qr.update(sql,s.getKcmc(),s.getJsxm(),s.getXq(),s.getXs(),s.getXf(),s.getZpcj(),s.getPscj(),s.getQmcj(),s.getKcsx(),s.getCjid(),s.getKsfsm(),s.getPxcj());

}

}catch(IOException e) {

e.printStackTrace();

}

}public static List post(List scoreList) throwsIOException {//獲取請求連接

Connection con = Jsoup.connect("http://jwgl.ntu.edu.cn/cjcx/Data/ScoreAllData.aspx")

.cookie("ASP.NET_SessionId","zogqkp55pbsaysrvbhfapi55")

.referrer("http://jwgl.ntu.edu.cn/cjcx/Main.aspx")

.ignoreContentType(true)

.userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36");

Document doc=con.post();

JSONObject jsonObject=JSONObject.fromObject(doc.body().text());

Integer count= (Integer) jsonObject.get("totalCount");for(int i=0;i

con= Jsoup.connect("http://jwgl.ntu.edu.cn/cjcx/Data/ScoreAllData.aspx")

.cookie("ASP.NET_SessionId","zogqkp55pbsaysrvbhfapi55")

.referrer("http://jwgl.ntu.edu.cn/cjcx/Main.aspx")

.ignoreContentType(true)

.userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36");

con.data("start",String.valueOf(i));

con.data("limit","20");

Document scores=con.post();

JSONObject scoresObject=JSONObject.fromObject(scores.body().text());

JSONArray jsonArray= scoresObject.getJSONArray("data");

Gson g= newGson();

List ps = g.fromJson(jsonArray.toString(), new TypeToken>(){}.getType());if(ps!=null) {

scoreList.addAll(ps);

}

}returnscoreList;

}

}

Score類是返回data的實體類,用來封裝數據。

通過post方法進行數據的爬取,在Connection對象里進行cookie,userAgent等數據的封裝,注意這個cookie里的值是第二步中從控制臺獲取到cookie值。

使用JsonObject和Gson進行數據的封裝,然后再把數據存入本地數據庫中。

4、在JSP中顯示或者導出到Excel

(有空再寫)

總結

以上是生活随笔為你收集整理的南通大学java期末_【Java爬虫】爬取南通大学教务处成绩的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。