qt 将int型数据显示在文本框_Qt编写Online judge爬虫
一、前提
剛開始接觸C++/Qt是需要一個(gè)項(xiàng)目練練手,當(dāng)時(shí)聽說(shuō)過(guò)OJ并且網(wǎng)絡(luò)不好,就想著把數(shù)據(jù)獲取下來(lái)隨時(shí)使用。
后來(lái)代碼寫多了之后聽說(shuō)Python寫爬蟲更方便,可惜坑已經(jīng)跳下去了,就一條路走到黑了。
這是我代碼之路的第一個(gè)完整實(shí)現(xiàn)完整功能的項(xiàng)目,以示紀(jì)念。
github地址如下
https://github.com/JackeyLea/BlackWidow.git?github.com二、開發(fā)流程
1. 讀取配置文件(數(shù)據(jù)庫(kù)位置、皮膚名稱)
2. 讀取數(shù)據(jù)文件(網(wǎng)站名稱列表)
3. 顯示界面
4. 開啟題庫(kù)
5. 從第1題開始顯示題目數(shù)據(jù)(題目ID、題目名稱、提交人數(shù)、通過(guò)人數(shù)、題目)
6. 點(diǎn)擊“顯示提示”
7. 在提示文本框顯示提示
8. 點(diǎn)擊“顯示答案”
9. 在答案文本框顯示答案
10. 點(diǎn)擊“下一題”
11. 如果大于max ID就顯示顯示第1題,否則顯示下一題
12. 點(diǎn)擊“上一題”
13. 如果小于1就顯示最大ID的題目,否則顯示上一題
14. 點(diǎn)擊“爬蟲”
15. 顯示爬蟲界面
16. 點(diǎn)擊“網(wǎng)站名”下拉文本框,選擇一個(gè)網(wǎng)站名
17. 清空爬蟲界面數(shù)據(jù)
18. 點(diǎn)擊“start”按扭
19. 加載json文件中其他數(shù)據(jù)(網(wǎng)址、開始ID、題目數(shù)據(jù)正則表達(dá)式、提交人數(shù)正則等、結(jié)束標(biāo)志等)
20. 開始爬蟲
21. 是否正常,是否結(jié)束等等,如果結(jié)束則跳轉(zhuǎn)到35,否則繼續(xù)
22. 拼接網(wǎng)址和ID,生成完整的當(dāng)前網(wǎng)址
23. 獲取網(wǎng)址的網(wǎng)頁(yè)數(shù)據(jù)
24. 判斷網(wǎng)頁(yè)數(shù)據(jù)是否正常,如果包含結(jié)束保證則清空,如果是200之外的返回碼則清空
25. 獲取網(wǎng)頁(yè)數(shù)據(jù)中的編碼值,并重新編碼網(wǎng)頁(yè)文本
26. 如果網(wǎng)頁(yè)數(shù)據(jù)為空則
27. 根據(jù)19中的數(shù)據(jù)進(jìn)行文本解析
28. 獲取題目數(shù)據(jù)中最長(zhǎng)的一句話,并計(jì)算MD5值
29. 查詢數(shù)據(jù)庫(kù),此MD5值是否存在,如果存在則跳轉(zhuǎn)到32,否則繼續(xù)
30. 將此MD5值插入MD5表
31. 將其他的數(shù)據(jù)插入data表
32. 在爬蟲界面更新題目名、位置名、ID,同時(shí)更新已獲取的數(shù)量值
33. ID+1,正常數(shù)量+1,等等
34. 跳轉(zhuǎn)到21
35. 提示結(jié)束
36. 跳轉(zhuǎn)到15
三、界面
四、問(wèn)題
1、使用題目最長(zhǎng)一句話計(jì)算MD5進(jìn)行相似度判斷,發(fā)現(xiàn)效果并不好。
2、使用json格式進(jìn)行配置文件讀寫發(fā)現(xiàn)知識(shí)水平不夠,只能進(jìn)行第一層數(shù)據(jù)讀寫
3、主線程和爬蟲線程交互有點(diǎn)問(wèn)題
4、poj題目太多,加上反爬蟲的耗時(shí),考慮使用多線程等等
5、練手項(xiàng)目,最近在學(xué)Java、Python,熟練之后在用Java、Python重寫。
總結(jié)
以上是生活随笔為你收集整理的qt 将int型数据显示在文本框_Qt编写Online judge爬虫的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql执行一条语句会加锁吗_一条简单
- 下一篇: 未来如何与计算机和谐相处,未来计算机将进