其实前面写的两篇文章已经可以实现搜索了,只要找答案找的快,10秒之内还是可以选对了,但是有些的问题的答案并不是那么容易搜索到,而且是在搜索到的链接里面,当我们再次打开链接时,时间肯定不够,所以就用程序来帮我们找答案吧.

统计分析搜索到的结果

从上面的图片中我们可以发现我们搜索到的只是链接,还不是正文,需要再次进入正文部分.

1. 找到每一个链接
这个比较简单,稍微分析一下百度的页面结构,就可以找到每篇文章的链接,这里我用的库是JSoup,可以很方便的解析html页面.

但是等我们找到页面的链接时,就会发现,百度的链接都是加密过的,不能直接使用
比如:
http://www.baidu.com/link?url=5IUPz7MaG0u1QJiGjRupgTYCwMpdQh0NOSvNB2vnE6M_WuYw3MPfJxVrmrgRlbyxSr9Pgly4KhNhVT6bpEg-2HzhqEytd3sXzaogGk7NOdm&wd=&eqid=b40eb8310001f1fb000000025a7d2dd2

实际的链接其实是https://zhidao.baidu.com/question/2012383527471587388.html,那怎么得到解密之后的真实链接呢,我们可以在服务器响应给我们的header部分的Location找到真实的链接.
但是对于百度自家的网站链接如:百度知道,百度文库,百度作业帮等等,在加密之后的链接中会加入一些其他参数,比如上面链接的&wd=&eqid=b40eb8310001f1fb000000025a7d2dd2,如果对整个链接提取header会没有Location,只有把后面的参数都去掉只剩下url参数才可以,所以就加一下判断:

// 简单的截取代码如下
int index = urls.indexOf("&");
if(index!=-1) {urls = urls.substring(0, index);
}

假如我们得到的新的url为:
http://www.baidu.com/link?url=5IUPz7MaG0u1QJiGjRupgTYCwMpdQh0NOSvNB2vnE6M_WuYw3MPfJxVrmrgRlbyxSr9Pgly4KhNhVT6bpEg-2HzhqEytd3sXzaogGk7NOdm

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
HttpURLConnection.setFollowRedirects(false);
String location = conn.getHeaderField("Location");
System.out.println(location);
//输出为:https://zhidao.baidu.com/question/2012383527471587388.html

现在我们已经得到了每个链接的真实url,剩下的就是普通的爬取,分析,提取内容了,
我们把识别到的答案逐个在爬取到的内容中检索,找到次数最多的一般就是正确答案了.
* 但是对于答案是数字,字母的,一般来说就不准确了,因为爬取到网页包含太多的字母和数字,但这些数字和字母并不是有效答案.
* 一般题目中包含否定或反义词的时候,我们要对题目简单删改,因为搜索到的内容一般都是肯定直接的问题.例如:
题目:唐宋八大家不包括以下哪个人?
答案:A.柳宗元 B.苏轼 C.李白
如果我们把题目原封不动搜索,那搜索到的肯定不准确,所以我们就要把”不”字删掉,那么搜索到的就是正面内容,统计分析的选项次数,C选项肯定最少,那么就选最少的那一项.
百度搜索结果页一页有10条信息,一般来说,统计第一页就可以找到答案了,而且越往后搜索结果越不准确,
* 但是10个链接一个一个搜索也还是有点慢的,毕竟我们只有10s的时间,所以我们可以用多线程的方式,10条链接同时分析,只要找到符合选项的,就将此选项频率加一.这样也避免了因某条链接超时而导致搜索中断.
以下为软件运行时的画面:

点击选取题目识别区按钮,将会出现一个半透明窗口,将此窗口覆盖在题目上方,右键点击OK即可,同理选取答案识别区只要把窗体覆盖在答案上方.
一切弄好,点击文本识别并search即可搜索题目,左方显示浏览器搜索界面,右侧显示统计到的三个选项的频率.
手机如何投影在电脑上呢?有许多软件都提供这样的服务,我这里用的是Total Control,

答案首先参考左边浏览器,其次再参考右边选项频率.

Java写的答题助手项目分析与总结(三)相关推荐

  1. java 答题卡_阅读下列说明和java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】 - 信管网...

    阅读下列说明和JAVA代码,将应填入(n)处的字句写在答题纸的对应栏内. [说明] 某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾.纸巾售卖机的状态图如图6-1 ...

  2. java 答题卡_试题六(共15分) 阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某咖啡 - 赏学吧...

    试题六(共15分) 阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内. [说明] 某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用.咖 ...

  3. java 答题卡_试题八(共15分)阅读以下说明和Java程序代码,将应填入(n) 处的字句写在答题纸的对应栏内。[说明]在 - 赏学吧...

    试题八(共15分) 阅读以下说明和Java程序代码,将应填入(n) 处的字句写在答题纸的对应栏内. [说明] 在下面的 Java 程序代码中,类SalesTicket 能够完成打印票据正文的功能,类H ...

  4. java 代码阅读题_● 试题三 阅读以下说明和Java程序代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 1.S - 赏学吧...

    ● 试题三 阅读以下说明和Java程序代码,将应填入(n)处的字句写在答题纸的对应栏内. [说明] 1.SMTP是发送E-mail的协议,常用以下5条命令发送E-mail: ·HELO,与SMTP服务 ...

  5. java 答题卡_阅读以下说明和java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】 - 信管网...

    阅读以下说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内. [说明] java.util包中提供了HashMap模板类,该模板类可以表示多个"键-值"对的集合,其 ...

  6. java答题格式,阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】现欲实现一个图像浏览 - 赏学吧...

    阅读下列说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内. [说明] 现欲实现一个图像浏览系统,要求该系统能够显示BMP.JPEG和GIF三种格式的文件,并且能够在Windows和L ...

  7. java 导出答题卡_试题六(共15分) 阅读以下说明、图和Java代码,填补Java代码中的空缺(1)~(6),将解答写在答题纸的对 - 赏学吧...

    试题六(共15分) 阅读以下说明.图和Java代码,填补Java代码中的空缺(1)-(6),将解答写在答题纸的 对应栏内. [说明] 已知对某几何图形绘制工具进行类建模的结果如图6.1所示,其中Sha ...

  8. java emptyqueueexception,阅读以下说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。说明 类Queue表示队列,类中的 - 赏学吧...

    阅读以下说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内. 说明 类Queue表示队列,类中的方法如下表所示. 类Node表示队列中的元素:类EmptyQueueException 给出 ...

  9. java绘图 point_阅读以下说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】 某绘图系统存在Point、 - 赏学吧...

    阅读以下说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内. [说明] 某绘图系统存在Point.Line.Square三种图元,它们具有Shape接口,图元的类图关系如图6-1所示.现要 ...

  10. Java LPT_●试题五 阅读下列说明和HTML文本,分析其中嵌入的JavaScrlpt脚本,将应填入(n)处的语句写在答题纸 - 赏学吧...

    ●试题五 阅读下列说明和HTML文本,分析其中嵌入的JavaScrlpt脚本,将应填入(n)处的语句写在答题纸的对应栏内. [说明] 本题实现用鼠标拖拽图片在Web页内移动的功能.将鼠标放在图片上,按 ...

最新文章

  1. java语言for模板_java版的模板语言
  2. mysql超经典的8小时问题-wait_timeout
  3. 用python找对象_还在单身的你 Python教你如何脱单
  4. cd1101d 树形dp
  5. 【Python CheckiO 题解】Between Markers
  6. Android 调整屏幕分辩率
  7. VMware 下Linux无法上网 新增支持WIFI方式 无线连接
  8. 服务器proc文件,特殊文件系统proc
  9. 信息学奥赛一本通(1045:收集瓶盖赢大奖)
  10. python和lisp学哪个好_五位专家跟你讲讲为啥Python更适合做AI/机器学习
  11. 一个好用的变换类TransformManager
  12. linux删除更新的系统内核,Linux系统如何删除旧内核
  13. centos java进程号_centos中分析java占用大量CPU资源的原因
  14. JAVA冰箱评测开题报告,家用冰箱毕业论文 开题报告
  15. Eclipse常用插件下载
  16. HTTP报文(这篇讲得比较详细)
  17. (bat)检查今天星期几,并执行程序
  18. 正向有功正向无功_电表的正向有功和反向无功的详细解读
  19. 读取word、pdf某些位置的值
  20. 王牌英雄(Awesomenauts)研究报告

热门文章

  1. 万能码:新发展新纪元(安全扫码专业委员会)
  2. cad在线转换低版本_资源分享/CAD版本转换器
  3. strcmp()函数
  4. Eucalyptus的结构
  5. 打开Word时会出现错误的解决办法
  6. 网页导出pdf不完整_这些 PDF 神器,请你务必收藏
  7. centos usb转网口_Linux环境下使用 USB转串口驱动(一)
  8. CPC软件使用 专利申请说明书附图插入(简单粗暴)CPC软件安装
  9. 【毕业设计】基于Android的家校互动平台开发(内含完整代码和所有文档)——爱吖校推(你关注的,我们才推)...
  10. ADS内Smith Chart Utility消失了Palette如何找回