通过Htmlunit操作模拟百度查询接口的填写与提交

很多时候对于一个页面,我们希望通过代码来完成查询的操作,这也是属于集成系统的一部分,怎么把总接口的查询条件与查询关键字分发到各个子查询接口。举个例子,现在要模拟通过百度的首页来查询“暨南大学”这个关键字得到的查询结果,这时候我们希望代码帮我们填写百度的那个查询接口,然后模拟点击“百度一下”,最后返回我们所需查询的页面内容。可能很多的工具可以实现这个功能,但是在所有工具当中,我觉得Htmlunit是最简单方便的。接下来主要谈下如何通过其来实现上面所说的操作


代码一:

public class BaiduInterface {

WebClient webclient = new WebClient();
HtmlPage htmlPage;
HtmlInput inputs;
HtmlInput btn;
//初始化
public BaiduInterface() {
// TODO Auto-generated constructor stub
webclient.getOptions().setCssEnabled(false);
webclient.getOptions().setJavaScriptEnabled(false);
try {
htmlPage = webclient.getPage("https://www.baidu.com/");
inputs = (HtmlInput) htmlPage.getElementById("kw");
btn = (HtmlInput) htmlPage.getElementById("su");
} catch (FailingHttpStatusCodeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//获取查询关键字的结果界面
HtmlPage getPageOfSearch(String url){
inputs.setValueAttribute(url);
HtmlPage tempPage = null;
try {
tempPage = btn.click();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return tempPage;
}


}


实现的步骤简单的说就是:我们应该先获取填写关键字的输入框和提交的点击按钮,在这里我们通过输入框的ID来定位到这个元素,inputs = (HtmlInput) htmlPage.getElementById("kw"),我们还把他强制转换成为了HtmlInput元素,接下来要为它填充具体关键字的时候,我们就可以通过HtmlInput的setValueAttribute方法来填充。

对于百度查询接口提交的按钮,我们也是通过其ID来定位获取到这个元素,并且把它强制装换成HtmlInput,btn = (HtmlInput) htmlPage.getElementById("su")。后面提交的额时候我们就可以通过HtmlInput提供的click()方法来完成点击事件。通过点击事件click(),返回的是查询的结果页面,属性为HtmlPage。通过以上的操作就可以完成对于百度查询接口的模拟填充和点击。

如果通过以上的代码我们调用getPageOfSearch(“暨南大学”),将返回如下页面。

以上只是完成简单的通过代码来模拟对于百度页面的操作,对于查询的结果需要根据自己的需求来进一步过滤,从而得到用户自己真实想要的结果。

这是针对具体页面来操作模拟填充表单和提交表单的操作,针对未知的查询页面,要结合前几篇博客提到的提取未知表单和获取未知input输入框等的规则来匹配后进行相似的操作


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值