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

一、前提

刚开始接触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

三、界面

2b0255fb9fa6c2c16025e2cab0cf9bf3.png

c15cdd6f4eb441e5b43d4d96a06b26a0.png

f44e1e1a38da2521f3f7dea685daf455.png

6297f55d0ea98b61ef2a25e3c4c04b82.png

四、问题

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vim函数跳转 php,求助!! vim-gvim中如何让其显示函数及其参数!!

求助!! vim-gvim中如何让其显示函数及其参数!!(2012-06-05 02:25:34)标签:如何杂谈求助!!vim/gvim中如何让其显示函数及其参数!!用了一段时间的vim,发现在自动补全中发现…

php添加填空,PHP之preg_replace_callback(),将填空题的[[]]替换成______

preg_replace_callback 函数执行一个正则表达式搜索并且使用一个回调进行替换。语法图1这个函数的行为除了可以指定一个 callback 替代 replacement 进行替换字符串的计算,其他方面等同于 preg_replace()。参数说明:$pattern: 要搜索的模式,可…

怎么用php写软件老吴p,11.32 php扩展模块装安

php动态扩展模块添加因为业务需要或者编译php的时候少安装了一个模块,我们现在需要新添加一个模块,那怎么做呢?查看模块/usr/local/php/bin/php -m第一步:去php的安装目录中/ext/目录下查看有没有 你需要安装的扩展模块的包比如&a…

linux用户没有创建文件的权限设置密码,Linux学习第五章用户身份与文件权限

一、用户身份与能力Linux系统中一共有三种用户第一种:管理员 root UID 0第二种:系统用户 不需要登录系统 负责单一服务的运行 UID 0-1000第三种:普通用户 日常登录系统操作的用户 UID 1000--uid1000(zhang) gid1000(zhang) groups…

是vans_Vans 的旧海报上原来有这么多学问…

事情是这样的,某天,当我们编辑部翻开一张 Vans 70 年代的海报,发现开头上面写着:GO “JAMIN” IN VANS。这段话引起了在场的所有人的好奇。(图片来源:Vans)到底什么是 “JAMIN” 呢? 在我们刨根究底的搜寻下…

云科技网络验证源码_面向虚拟化架构和容器云的开源安全工具

随着云和虚拟技术发展,docker容器的使用越来越流行和方便。有很多企业已经把基础架构由传统实体机转移到了虚拟机化架构,基于公有云、私有云以及容器云构建在线服务。与容器相关的安全性对变得越来越重要。与传统的安全性方法相比,虚拟化架构…

linux ubuntu 安装yum,ubuntu使用yum安装软件问题

其实ubuntu是不应该用yum来管理软件安装的,只是后来才发现的,这里记录一下尝试的过程。一开始是想把windows桌面上的文件拖到xshell登录的ubuntu的目录中,但是没成功,参考https://blog.csdn.net/liuao107329/article/details/4999…

linux异步实现原理,Android异步处理四:AsyncTask的实现原理

分析:在分析实现流程之前,我们先了解一下AsyncTask有哪些成员变量。privatestaticfinalintCORE_POOL_SIZE 5;//5个核心工作线程privatestaticfinalintMAXIMUM_POOL_SIZE 128;//最多128个工作线程privatestaticfinalintKEEP_ALIVE 1;//空闲线程的超时时间…

mysql5.7 for linux7,大道浮屠诀---mysql5.7.28 for linux安装

环境:redhat6.5安装RMP包的具体操作如下:1、如有mariadb,先卸载rpm -qa |grep mariadbrpm -qa |grep mysql*rpm -e --nodeps xxxxxx (卸载查询到的rpm包)2、安装新的mysql5.7.28,解压安装包tar -xvf mysql-5.7.28-1.el6.x86_64.rpm-bundle.t…

一维数组kmeans聚类c语言,一维数组的 K-Means 聚类算法理解

刚看了这个算法,理解如下,放在这里,备忘,如有错误的地方,请指出,谢谢需要做聚类的数组我们称之为【源数组】需要一个分组个数K变量来标记需要分多少个组,这个数组我们称之为【聚类中心数组】及一…

c语言根据图片轮廓图,c语言通过opencv实现轮廓处理与切割

c语言通过opencv实现轮廓处理与切割发布时间:2020-10-14 11:00:33来源:脚本之家阅读:89作者:Farmwang注意在寻找轮廓时要选择中寻找外层轮廓RETR_EXTERNAL#include "opencv/cv.h"#include "opencv/highgui.h"…

android 指定语言的资源,Android国际化多语言切换

最近工作中突然要求要项目进行国际化,之前没遇到过。但是也很简单呀,只需要把添加一个相应语言的的strings.xml的资源文件就好了,不是吗?这样只要切换系统语言就能切换app的文字语言了。但是由此引发了一个稍微深入一点的问题&…

Android 抖音爱心动画,Android实现抖音心形函数

刷抖音的时候,无意间刷到 心形函数的动画,觉得很有意思, 就简单的用Android的方式实现了一下.心形函数公式公式 :心形公式X的取值范围:[-1.81,1.81],该取值范围是保证正弦函数有效取值范围。我们可以通过参数 a 的取值, 来形成不同的心形轮廓, 进而形成动…

android手机解除root,手机显示被root什么意思(手机root怎么解除)

手机root后有什么坏处?如何一键获取手机ROOT权限?在信息时代的大环境下,“黑科技”夺走了大部分的眼球,获取手机root属于所有安卓手机的最大黑科技,也是最基础的搞机技能,本篇就给大家讲解下手机root权限获…

Android11MIUI12,安卓11版MIUI12来了,3款已适配

原标题:安卓11版MIUI12来了,3款已适配现在安卓11系统第二个测试版升级更新都已经推送了,不知道各位有没有升级更新到安卓11系统体验一下新系统。不知道你的手机能不能升级安卓11系统,厂商有没有为你的手机适配安卓11系统&#xff…

html修改details范围,HTML details 标签

HTML 标签标签用于创建一个可展开折叠的元件,用户可以从中检索其他附加的信息。实例使用 元素:Copyright 1999-2011.- by Refsnes Data. All Rights Reserved.All content and graphics on this web site are the property of the company Refsnes Data.…

html中如何设计对话框,用纯css3和html制作泡沫对话框实现代码

现在,泡沫对话框是一种比较流行的趋势,一般都是用html和javascript,和或者图片来实现,今天用纯css3和html来实现一些基本的简单的泡沫对话框html代码如下:复制代码代码如下:The basic bubble variantsThis only needs …

html获取此次点击的id,github项目解析(八)--Activity启动过程中获取组件宽高的三种方式...

转载请标明出处:1片枫叶的专栏上1个github小项目中我们介绍了避免按钮重复点击的小框架,其实现的核心逻辑是重写OnClickListener的onClick方法,添加避免重复点击的逻辑,即为第2次点击与第1次点击的时间间隔添加阙值,若…

minitab怎么算西格玛水平_16:三因子二水平全因子实验设计和MINITAB应用训练

16:思慧慧咨询官网――精益生产、六西格玛黑带、绿带、TRIZ创新发明、实验设计DOE、价值工程、全面设备管理(TPM)培训和项目咨询​www.sihuide.com分享地址:千聊入口1 https://m.qlchat.com/topic/details?topicId20000087131743…

html css position,[CSS]CSS Position 详解

一. CSS position 属性介绍CSS中position属性指定一个元素(静态的,相对的,绝对或固定)的定位方法的类型。有static,relative,absolute和fixed四种取值,默认是static。二. position: staticstatic:没有定位&…