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…

javweb音乐网站_基于javaweb音乐网站设计与实现

基于javaweb音乐网站设计与实现 本科毕业论文(设计)题目:基于JSP的音乐网站的设计与实现姓 名: 学 号: 专 业: 院 系: 指导老师: 职称学位: 讲师/硕士 完成时间: 2015年 …

oracle数据库连接检查,检查Oracle数据库的最大连接

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。[[email protected] sql]# more check_connect_oracle.sh#!/bin/bash#functions: connect oracle server test#author:Tony Wang#modify_date: 2015-06-03.mkdir…

python爬虫进程和线程_python爬虫番外篇(一)进程,线程的初步了解-阿里云开发者社区...

整理这番外篇的原因是希望能够让爬虫的朋友更加理解这块内容,因为爬虫爬取数据可能很简单,但是如何高效持久的爬,利用进程,线程,以及异步IO,其实很多人和我一样,故整理此系列番外篇一、进程程序并不能单独和…

ol xyz 加载天地图_OpenLayers加载天地图方法——WMTS和XYZ

1、ol.layer.Tile及数据源类结构openlayers中,图层(layer)不可缺少的组成部分是数据源(source),天地图是切片的数据服务,对应的图层是ol.layer.Tile,下图是其数据源对应的类结构图,红色部分是重点内容。从图可以看到&a…

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

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

java类验证和装载顺序_Java类加载机制实现流程及原理详解

前言我们知道,Java项目编译后会生成许许多多的class文件,class文件保存着类的描述信息。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转化解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就…

Linux中more命令的使用,Linux中more命令使用详解教程

1、使用权限:所有者 什么是所有者权限?2、使用方式more [参数选项] [文件]参数:num 从第num行开始显示;-num 定义屏幕大小,为num行;/pattern 从pattern 前两行开始显示;-c 从顶部清屏然后显示;-…

k8s 查看ip地址属于哪个pod_一个简单的例子理解Kubernetes的三种IP地址类型

很多Kubernetes的初学者对Kubernetes里面三种不同的IP地址和工作机制理解得不是很清楚。本文我们通过一个最简单的例子来学习。用如下命令行创建一个基于nginx的deployment:kubectl run nginx --imagenginx:maxline用kubectl get deploy查看成功生成的名为nginx的de…

linux resin 查看日志命令,【转】linux:访问日志分析

作为一个程序员或项目负责人,甚至运营人员,很多人都想知道:* 我们的项目访问量怎么样* 用户访问高峰在什么时候* 系统变慢的时候用户做了哪些操作* 用户对哪些功能比较感兴趣* 真实用户在服务器上的操作轨迹是什么样的* 系统的瓶颈在哪* 哪些…

linux系统初级管理书,Linux系统管理基础--超级适合Linux新手的书

liuyongqing 于 2012-11-15 11:53:18发表:谢谢分享liuyongqing 于 2012-11-15 11:53:11发表:谢谢分享liuyongqing 于 2012-11-15 11:52:52发表:谢谢分享liuyongqing 于 2012-11-15 11:52:46发表:谢谢分享liuyongqing 于 2012-11-15 11:52:43发表:谢谢分享wankuixing 于 2012-11…

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

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

linux单机到单机adg环境,Oracle 11.2.0.4 DataGuard 环境打PSU,OJVM PSU补丁快速参考

环境:RHEL6.5 Oracle 11.2.0.4 DataGuard physical standby主库和备库都是单节点。需求:主备库同时应用160719的PSU和OJVM PSU补丁。先参考MOS文档 ID 278641.1 的解决方案如下:SOLUTIONProcess Overview:In the primary disable log shippi…

python增量更新数据_Python标准库——加密

增量更新散列计算器的update()方法可以反复调用。每次调用时,都会根据提供的附加文本更新摘要。增量更新比将整个文件读入内存更高效,而且能生成相同的效果。新建hashlib_update.py文件。import hashlibfrom hashlib_data import loremh hashlib.md5()h…

linux 帮助文档管理,Linux系统帮助文件使用——man命令

如何获取命令帮助:(1)如果是内键命令:help COMMAND 例如:help history外部命令: COMMAND –help 例如:ifconfig –help(2)也可以查看manual手册,手册存放在/usr/share/man,全是.gz压缩…

activiti前端画图转化_记Activiti入门使用-2 流程绘制、导入及开始一个流程

一、流程绘制与导入百度啥的找了好多bpmn绘制工具,都不尽如人意,大多数都不能编辑网关出口的跳转条件,最后还是选择了activiti官方的那个绘图的app。。。啥都好,就是线不能弯,很难受。(后来开发的时候惊讶地发现了方法…

int是不是python保留字_下面不属于Python保留字的是:

【填空题】作解剖定位时,家畜前、后肢的后面分别称为( )和( )。【单选题】世界上第一条高速铁路是【单选题】ZZ* ?【单选题】下面不属于Python保留字的是:【单选题】The accounting concept which requires assets to be valued at their net book val…

计算机系统结构实验报告Linux,计算机操作系统体系结构实验报告.doc

操作系统实验报告实验目的:随着操作系统应用领域的扩大,以及操作系统硬件平台的多样化,操作系统的体系结构和开发方式都在不断更新,目前通用机上常见操作系统的体系结构有如下几种:模块组合结构、层次结构、虚拟机结构和微内核结构…