博客班級 | 2018軟件工程1班(福州大學至誠學院 - 計算機) |
---|---|
作業要求 | 作業要求 |
作業目標 | 擅用 Chrome 的開發者工具,熟悉 git 從本地同步到遠程倉庫的流程和命令 |
作業源代碼 | 碼雲倉庫地址 |
學號 | 211806345 |
代碼行數 | 156行 |
---|---|
需求分析時間 | 2h |
編碼時間 | 8h |
需求:
- 獲取不同類型活動的經驗值
- 經驗值的頁面元素沒有任何的id,class這種供與其他標簽區分的選擇器或者其他屬性
- 在“課堂小測”部分中有幾個活動需要考慮到互評經驗值
- 需要考慮是否“已參與”某個活動
- 編寫分數計算規則
- 使用 git 工具將本地倉庫代碼同步到遠程倉庫
- 使用https協議倉庫地址進行遠程推送
- 使用ssh協議倉庫地址進行遠程推送
學習成本及思路的過程轉變:
-
參考同學們的博客,知道了獲取頁面元素有 Jsoup API 可以調用,學習使用 Jsoup API
-
寫入配置文件和解析 html 文件
- 配置文件和jar包的使用在上學期的 12JDBC文檔 中有提到,回顧使用。
-
在獲取頁面元素這里花費了巨大的時間成本思考,如何獲取經驗值,沒有id,class標簽,那我該如何區分他們,他們的差別在哪,如何區分每一個部分(課前自測,課前小測,課堂完成,編程題,附加題)的經驗值。
- 每個活動都是由 class = interaction-row 的div元素開頭
- 每個活動中都有若干個span標簽
- 在若干個span標簽中第二個總是活動名稱
- 而“經驗值”總是最后一個span標簽(有互評經驗存在除外)
- 到這里這些規律足夠了。
-
是否“已參與”某個活動,思路由靠顏色(紅綠)來區分是否“已參與”到直接識別定位的span標簽中是否有“已參與”字樣,並且和每一活動的名字一起作為判斷是否要累加經驗值和在哪個部分累加經驗值的條件
String attend = document.select("div[class = interaction-row]").get(i).select("span[style='color:#8FC31F']").text();
Boolean isAttend = attend.contains("已參與");
if(section_name.contains("課堂小測") && isAttend == true) {·····}
疑惑:
同時在這里注意到,修飾“經驗值”的span標簽和修飾“已參與”字樣的span標簽,他們的屬性,樣式都是一致的,如圖,
那么既然我能獲取到與修飾經驗值完全相同的標簽的“已參與”字樣,那為什么不可以直接獲取到經驗值呢,那不就可以將獲得的字符串類型的經驗值中的數字經轉換后提取出來,一切皆大歡喜- - 。。。
只是在獲取經驗值那里變得更靈活了,不單單只是靠規律(每個活動的最后一個span是經驗值,而且帶互評經驗的無法適用這一規律)得到經驗值了。
然而

已解決:“已參與”和“經驗值”的span標簽的css屬性並不相同!!!(差別在“;”)如圖
補充:忘了作業要求是做成命令行小工具,感謝舍友桂鶯的提醒和幫助 😘
開始做作業遇到的問題有:
1.在這個頁面停留了良久,
2.不知道如何寫命令行工具
3.參考同學提交的博客,表示看不懂
4.小到如何創建一個properties文件和jar包,如何去使用。
本身的問題:
- 習慣於上學期老師一步一步給出每個步驟,然后進行編程的思路
- 感受到了自己知識的貧瘠。。。。。。。。
參考資料:
https://www.cnblogs.com/211806342wbw/p/13643286.html
https://www.cnblogs.com/Icarus52/p/13638303.html
https://www.cnblogs.com/sam-uncle/p/10922366.html
https://blog.csdn.net/qq_15158911/article/details/54411979