存档留用

(= 存档留着备用)

爬的是一个开放的自动回复机器人 API 网站 http://i.itpk.cn/。 结构 大致如下:

我做的事情就是【输入文字,点击按钮,爬取内容】,如上图所示。

  1. package org.sample.service.impl;
  2.  
  3. import com.gargoylesoftware.htmlunit.WebClient;
  4. import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
  5. import com.gargoylesoftware.htmlunit.html.HtmlElement;
  6. import com.gargoylesoftware.htmlunit.html.HtmlInput;
  7. import com.gargoylesoftware.htmlunit.html.HtmlPage;
  8. import org.sample.service.ThirdPartyRobot;
  9.  
  10. import java.io.IOException;
  11.  
  12. public class ThirdPartyRobotImpl implements ThirdPartyRobot {
  13.  
  14. @Override
  15. public String getReplyByWords(String words) {
  16. String result = getReplyByWordsThroughMoLiRobot(words);
  17. return result;
  18. }
  19.  
  20. private String getReplyByWordsThroughMoLiRobot(final String words) {
  21. // 打开浏览器 进入页面
  22. WebClient webClient = new WebClient();
  23. // webClient.getOptions().setJavaScriptEnabled(false);
  24. webClient.getOptions().setCssEnabled(false);
  25. webClient.getOptions().setUseInsecureSSL(false);
  26. HtmlPage page = null;
  27. try {
  28. page = webClient.getPage("http://i.itpk.cn/");
  29. } catch (IOException e) {
  30. e.printStackTrace();
  31. return null;
  32. }
  33.  
  34. // 获取文本框 输入内容
  35. HtmlInput question = (HtmlInput) page.getElementById("question");
  36. question.setValueAttribute(words);
  37. // System.out.println(question.asText());
  38.  
  39. // 获取按钮 点击按钮
  40. HtmlAnchor getAnswer = page.getAnchorByText("普通提问");
  41. try {
  42. getAnswer.click();
  43. } catch (IOException e) {
  44. e.printStackTrace();
  45. return null;
  46. }
  47. // List<HtmlAnchor> Anchors = page.getAnchors();
  48. // for (HtmlAnchor x : getAnswer) {
  49. // System.out.println(x.getHrefAttribute());
  50. // System.out.println(x.asText());
  51. // }
  52.  
  53. try {
  54. Thread.sleep(300);
  55. } catch (InterruptedException e) {
  56. e.printStackTrace();
  57. return null;
  58. }
  59.  
  60. // 获取结果文本
  61. HtmlElement reply = (HtmlElement) page.getElementById("reply");
  62. String replyText = reply.asText();
  63. // 关闭浏览器
  64. webClient.close();
  65.  
  66. return replyText;
  67. }
  68. }

Java笔记 #03# HtmlUnit爬虫的更多相关文章

  1. JAVA笔记03 变量和运算符 面试题以及笔记

    标识符的命名规则需要注意哪几点? 定义 就是给类,接口,方法,变量等起名字的字符序列 组成规则 英文大小写字母 数字 $和_ 注意事项 不能以数字开头 不能是java中的关键字 区分大小写 常见的命名 ...

  2. Java:并发笔记-03

    Java:并发笔记-03 说明:这是看了 bilibili 上 黑马程序员 的课程 java并发编程 后做的笔记 3. 共享模型之管程-2 本章内容-2 Monitor wait/notify 3.6 ...

  3. SaToken学习笔记-03

    SaToken学习笔记-03 如果排版有问题,请点击:传送门 核心思想 所谓权限验证,验证的核心就是一个账号是否拥有一个权限码 有,就让你通过.没有?那么禁止访问! 再往底了说,就是每个账号都会拥有一 ...

  4. Effective Java笔记一 创建和销毁对象

    Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...

  5. python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容

    python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...

  6. 《30天自制操作系统》笔记(03)——使用Vmware

    <30天自制操作系统>笔记(03)——使用Vmware 进度回顾 在上一篇,实现了用IPL加载OS程序到内存,然后JMP到OS程序这一功能:并且总结出下一步的OS开发结构.但是遇到了真机测 ...

  7. python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容

    python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...

  8. java笔记00-目录

    --2013年7月26日17:49:59 学习java已久,趁最近有空,写一个总结: java笔记01-反射:

  9. Java学习03

    Java学习03 1.java面试一些问题 一.什么是变量 变量是指在程序执行期间可变的数据.类中的变量是用来表示累的属性的,在编程过程中,可以对变量的值进行修改.变量通常是可变的,即值是变化的 二. ...

随机推荐

  1. 【Java】-NO.16.EBook.4.Java.1.001-【疯狂Java讲义第3版 李刚】- UML

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.001-[疯狂Java讲义第3版 李刚]- Style:EBook Series:Java Since ...

  2. 【LeetCode每天一题】 Merge k Sorted Lists(合并K个有序链表)

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. E ...

  3. Centos7系统防火墙上开端口

    //permanent 永久生效 没有此参数重启失效 firewall -cmd --zone=public --add -port=80/tcp --permanent            //开 ...

  4. Amazon RDS多区域高可用测试

    最近在AWS上面需要部署一组多区域RDS集群,AWS的多区域简单理解就是RDS一主一从分别在当地的两个机房(两个区域).所以就有了下面各方面的测试. 我们需要测试什么? Primary挂掉时,Seco ...

  5. 使用pycharm调试django项目

    要使用pycharm调试django 打断点调试后台代码,首先要进行一下配置: 1.debug 配置 打开debug界面 2.选择python点+加号,然后选择python 3.名字debug,这个看 ...

  6. vue中使用base64和md5

    1.在项目根目录下安装 cnpm install --save js-base64 cnpm install --save js-md5 2.在项目文件中引入 import md5 from 'js- ...

  7. can not create symbolic link HDFS解压自动配置lib报错。

    如题,使用FusionInsight解压生成样例代码的时候报错,找不到解释.只猜测是权限问题.然后并没有仔细静心思考,心里杂念很多,很浮躁. 解决方法是“以管理员身份运行“. 想想高中:面对问题,不能 ...

  8. Ajax-创建ajax

    UNSENT : 未发送,刚开始创建完成AJAX对象,默认的状态就是0 OPENED : 已打开,执行了xhr.open之后状态变为1 HEADERS_RECEIVED :响应头信息已经成功的返回并且 ...

  9. vue--监听属性完成大小写字母间的转换

    监听属性 watch侦听属性的作用是侦听某属性值的变化,从而做相应的操作,侦听属性是一个对象,它的键是要监听的对象或者变量,值一般是函数,当你侦听的元素发生变化时,需要执行的函数,这个函数有两个形参, ...

  10. linux中使用另一用户打开拥有图形界面的程序

    在archlinux中使用oracle用户执行oui无法显示图形界面的问题.结果没解决,后来发现执行 xhost +si:localuser:oracle, 然后再使用oracle用户执行oui即可. ...