存档留用

(= 存档留着备用)

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

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

package org.sample.service.impl;

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import org.sample.service.ThirdPartyRobot; import java.io.IOException; public class ThirdPartyRobotImpl implements ThirdPartyRobot { @Override
public String getReplyByWords(String words) {
String result = getReplyByWordsThroughMoLiRobot(words);
return result;
} private String getReplyByWordsThroughMoLiRobot(final String words) {
// 打开浏览器 进入页面
WebClient webClient = new WebClient();
// webClient.getOptions().setJavaScriptEnabled(false);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setUseInsecureSSL(false);
HtmlPage page = null;
try {
page = webClient.getPage("http://i.itpk.cn/");
} catch (IOException e) {
e.printStackTrace();
return null;
} // 获取文本框 输入内容
HtmlInput question = (HtmlInput) page.getElementById("question");
question.setValueAttribute(words);
// System.out.println(question.asText()); // 获取按钮 点击按钮
HtmlAnchor getAnswer = page.getAnchorByText("普通提问");
try {
getAnswer.click();
} catch (IOException e) {
e.printStackTrace();
return null;
}
// List<HtmlAnchor> Anchors = page.getAnchors();
// for (HtmlAnchor x : getAnswer) {
// System.out.println(x.getHrefAttribute());
// System.out.println(x.asText());
// } try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
return null;
} // 获取结果文本
HtmlElement reply = (HtmlElement) page.getElementById("reply");
String replyText = reply.asText();
// 关闭浏览器
webClient.close(); return replyText;
}
}

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. 块结构在文件中的表示IOB【转载】

    转自:http://www.coderjie.com/blog/43b3601e0a2411e7841d00163e0c0e36 1.块在内存中以树的形式存储,分好块的文本在文件中用IOB标记存储: ...

  2. 论文阅读-使用隐马模型进行NER

    Named Entity Recognition in Biomedical Texts using an HMM Model  2004年,引用79 1.摘要 Although there exis ...

  3. 18-Python3 迭代器与生成器

    2018-11-22 16:14:01 print('迭代器********************************************************************** ...

  4. 使用JWT的RSA256加密做为用户认证, 测试性能

    http://www.giantflyingsaucer.com/blog/?p=5994 使用JWT的token认证,防止别人知道了接口后,随意调用,但是发现 stepping : 4 microc ...

  5. react 基本配置使用

    react入门的一些配置 安装和启动 npm install -g create-react-app create-react-app my-app cd my-app npm start  创建 t ...

  6. Keras学习率调整

    Keras提供两种学习率适应方法,可通过回调函数实现. 1. LearningRateScheduler keras.callbacks.LearningRateScheduler(schedule) ...

  7. 39.css3----button按钮点击时出现蓝色边框

    css控制Button 按钮的点击时候出现蓝色边框http://www.inbeijing.org/archives/1139 Button 按钮的点击时候出现蓝色边框的问题 添加css属性,这样在点 ...

  8. PO模型

    大神绕道而行,自我小白的笔记,仅此 一.创建文件夹,创建xxx.ini文件用来存放界面的定位元素,用 [界面_element]-->界面, 来划分界面界面元素,维护方便.定位元素的格式:  us ...

  9. HTTP请求解析过程 (简单概括)

    1.域名解析 用户输入网址,由域名系统DNS解析输入的网址: 2.TCP的3次握手 通过域名解析出的IP地址来向web服务器发起TCP连接请求,如果3次握手通过,则与web服务端建立了可靠的连接: 3 ...

  10. jQuery-切换效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...