一、前提

刚开始接触C++/Qt是需要一个项目练练手,当时听说过OJ并且网络不好,就想着把数据获取下来随时使用。

后来代码写多了之后听说Python写爬虫更方便,可惜坑已经跳下去了,就一条路走到黑了。

这是我代码之路的第一个完整实现完整功能的项目,以示纪念。

github地址如下

https://github.com/JackeyLea/BlackWidow.git​github.com

二、开发流程

1. 读取配置文件(数据库位置、皮肤名称)
2. 读取数据文件(网站名称列表)
3. 显示界面
4. 开启题库
5. 从第1题开始显示题目数据(题目ID、题目名称、提交人数、通过人数、题目)
6. 点击“显示提示”
7. 在提示文本框显示提示
8. 点击“显示答案”
9. 在答案文本框显示答案
10. 点击“下一题”
11. 如果大于max ID就显示显示第1题,否则显示下一题
12. 点击“上一题”
13. 如果小于1就显示最大ID的题目,否则显示上一题
14. 点击“爬虫”
15. 显示爬虫界面
16. 点击“网站名”下拉文本框,选择一个网站名
17. 清空爬虫界面数据
18. 点击“start”按扭
19. 加载json文件中其他数据(网址、开始ID、题目数据正则表达式、提交人数正则等、结束标志等)
20. 开始爬虫
21. 是否正常,是否结束等等,如果结束则跳转到35,否则继续
22. 拼接网址和ID,生成完整的当前网址
23. 获取网址的网页数据
24. 判断网页数据是否正常,如果包含结束保证则清空,如果是200之外的返回码则清空
25. 获取网页数据中的编码值,并重新编码网页文本
26. 如果网页数据为空则
27. 根据19中的数据进行文本解析
28. 获取题目数据中最长的一句话,并计算MD5值
29. 查询数据库,此MD5值是否存在,如果存在则跳转到32,否则继续
30. 将此MD5值插入MD5表
31. 将其他的数据插入data表
32. 在爬虫界面更新题目名、位置名、ID,同时更新已获取的数量值
33. ID+1,正常数量+1,等等
34. 跳转到21
35. 提示结束
36. 跳转到15

三、界面

四、问题

1、使用题目最长一句话计算MD5进行相似度判断,发现效果并不好。

2、使用json格式进行配置文件读写发现知识水平不够,只能进行第一层数据读写

3、主线程和爬虫线程交互有点问题

4、poj题目太多,加上反爬虫的耗时,考虑使用多线程等等

5、练手项目,最近在学Java、Python,熟练之后在用Java、Python重写。

qt 将int型数据显示在文本框_Qt编写Online judge爬虫相关推荐

  1. qt designer文本输入框_Qt编写高仿苹果MAC电脑输入法(支持触摸滑动选词)

    一.前言 最近有个朋友找我定制一个输入法,需要高仿一个苹果MAC电脑的输入法,MAC操作系统的审美无疑是相当棒的,于是乎直接拿以前的输入法高仿了一个,由于之前有做过输入法这块的开发,而且改进了四年,各 ...

  2. java程序中,数据验证,如何判断输入的文本框中的值是不是int型?

    String str1=jTextField1.getText(); str1=str1.replaceAll("[0-9]","");//将所有的数字型字符替 ...

  3. QT限制文本框输入的方法

    QT限制文本框输入的方法 界面编程的时候,对文本框的处理往往是个很头疼的事情: 一是焦点进入文本框时,从人性化考虑,应选择文本框中文本,方便输入: 二是,限制文本框的输入,只允许输入有效的文本,如果不 ...

  4. 写QT串口通信的UI界面时,数据输入文本框为什么要有文本(字符串)发送和十六进制发送?

    今天使用qt编写界面给下位机串口通信时,遇到了十六进制发送的问题,查了好多分享都没有给出很清楚的解释和建设性的意见,最终尝试了好多次才明白,也对串口通信有了新的理解,在此写下我学到的内容,如有不对,还 ...

  5. Qt入门-文本框类QLineEdit和QTextEdit

    QLineEdit是单行文本框. QTextEdit是多行文本框. (1)单行文本框QLineEdit 常用的方法和属性: (a)获取和设置文本对齐方式 Qt::Alignment alignment ...

  6. qt通过QComboBox实现文本框自动记忆、补全和下拉选项填写

    前言 在公司工作过程中,我多次遇到一个文本框经常要输入一大串信息,每次输入容易出错且速度很慢.于是我想到了QQ登录界面的功能. QQ登录界面的基本功能为:当点击下拉框,会出现曾经登录过的有效的账号密码 ...

  7. Python Qt GUI设计:QLineEdit和QTextEdit文本框类(基础篇—13)

    目录 1.QLineEdit文本框类 2.QTextEdit文本框类 QLineEdit和QTextEdit都是文本框类,QLineEdit类是单行文本框控件,可以输入单行字符串.QTextEdit类 ...

  8. 一文搞定Swing和Qt按钮和文本框的创建

    一文搞定Swing和Qt按钮和文本框的创建 Qt的截图 java的 源码 package com.lujun;import java.awt.Container;import javax.swing. ...

  9. python qt5 增加文本框_Python用PyQt5制作弹出式输入框,Qt图形界面编程之QInputDialog...

    前面内容,我们介绍了PyQt5的一些常用基本控件. 温故而知新 计数器QSpinBox使用详解,Python用PyQt5制作图形界面基础控件篇 Python用PyQt5实现多种弹出消息框,QMessa ...

最新文章

  1. writelines是python对文件的写操作方法_Python File writelines() 方法
  2. Mybatis XML文件的异常
  3. 【Linux环境部署】最新版 elasticsearch + kibana(7.15.0)安装、配置、启动(多个问题处理 + kibana仪表盘使用)
  4. PGM中置信传递、和—积算法
  5. jzoj3385-黑魔法之门【并差集】
  6. java selector 源码_Java NIO核心组件-Selector和Channel
  7. sqlplus登录缓慢的问题分析过程及解决小记
  8. libcareplus多补丁管理
  9. domino Format函数详解
  10. bzoj 3751: [NOIP2014]解方程(同余系)
  11. 用js内置对象XMLHttpRequest 来用ajax
  12. 拦截导弹 (最长上升子序列LIS)
  13. coco 数据集_PyTorch版YOLOv4更新了,适用于自定义数据集
  14. jmeter抓取cnode网站token值
  15. 阻抗计算公式、polar si9000(教程)
  16. Unity开发手机游戏从第一行代码到Taptap上线,我经历了什么
  17. vue项目 微信支付 和 支付宝支付
  18. 暴力递归转动态规划----以货币数问题展开
  19. android电视 浏览器 全屏,小屏幕大世界 傲游云浏览器Android全屏模式
  20. 【新技术】:移动支付过程中的NFC技术

热门文章

  1. TypeError: 'numpy.int64' object is not iterable ,'int' object is not iterable
  2. 图像处理中的通信原理——冈萨雷斯读书笔记(三)
  3. 转载:使用 Frida 来 hook 加固的 Android 应用的 java 层
  4. Effective Java~26. 不要使用 raw type
  5. 延边大学计算机金小峰,第九届中国信息安全博士论坛在我校开幕
  6. xd使用技巧_魔兽世界怀旧服老玩家才会的治疗技巧,这四个技能需要看时机选择...
  7. STM32F412应用开发笔记之二:基本GPIO控制
  8. iOS中WebKit框架应用与解析
  9. 强制消除Xcode警告的方法
  10. 创新, FMA amp; SMA 世界第一台VCD机的故事