由于在在WebClient中,默认支持对CSS,JavaScript的解析,因此会总是会出现很多错误信息,并且执行速度也很慢。

  因此,我们可以选择关闭掉WebClient对CSS,JavaScript的解析。

  使用WebClient#getOption()方法,返回一个WebClientOptions对象,可以对WebClient进行很多设置。比如:使用代理,设置连接的有效时间之类的。

◇关闭对Css,JavaScript的支持

package com.fuwh;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage; public class Demo04 { public static void main(String[] args) { WebClient webClient=null;
try {
webClient= new WebClient(BrowserVersion.FIREFOX_45); //定义一个WebClient
webClient.getOptions().setCssEnabled(false); //设置CSS解析无效
webClient.getOptions().setJavaScriptEnabled(false);//设置JavaScript解析无效 final HtmlPage page=webClient.getPage("http://www.tuicool.com/"); //从指定URL获取HtmlPage System.out.println(page.asXml()); } catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
webClient.close(); //关闭客户端
}
}
}

◇使用代理ip

package com.fuwh;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.ProxyConfig;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.WebClientOptions;
import com.gargoylesoftware.htmlunit.html.HtmlPage; public class Demo05 { public static void main(String[] args) { WebClient webClient=null;
try {
webClient= new WebClient(BrowserVersion.FIREFOX_45); //定义一个WebClient
WebClientOptions webClientOptions=webClient.getOptions();
webClientOptions.setCssEnabled(false); //设置CSS解析无效
webClientOptions.setJavaScriptEnabled(false);//设置JavaScript解析无效 webClientOptions.setProxyConfig(new ProxyConfig("49.212.39.221", 3129)); final HtmlPage page=webClient.getPage("http://www.tuicool.com/"); //从指定URL获取HtmlPage System.out.println(page.asXml()); } catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
webClient.close(); //关闭客户端
}
}
}

◇模拟提交表单

package com.fuwh;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlButton;
import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
import com.gargoylesoftware.htmlunit.html.HtmlDivision;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlObject;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSpan;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput; public class Demo06 { public static void main(String[] args) { try(final WebClient webClient= new WebClient(BrowserVersion.CHROME)) { final HtmlPage page=webClient.getPage("https://mvnrepository.com/");
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setJavaScriptEnabled(false);
HtmlDivision htmlDiv=(HtmlDivision) page.getByXPath("//div[@id='search']").get(0);
HtmlForm form=(HtmlForm) htmlDiv.getElementsByTagName("form").get(0);
// System.out.println(form.asXml()); HtmlTextInput textInput=form.getInputByName("q");
HtmlSubmitInput submit=form.getInputByValue("Search"); textInput.setValueAttribute("junit"); HtmlPage resultPage=submit.click();
// System.out.println(resultPage.asXml());
HtmlDivision htmlDiv2=resultPage.getFirstByXPath("//div[@class='im']");
System.out.println(htmlDiv2.asXml());
// webClient.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}

最新文章

  1. sql union和union all的用法及效率
  2. 数据库连接池的选择 Druid
  3. jquery实时监测手机号是否符合规则,并根据手机号检测结果将提交按钮设为不同状态
  4. MySQL vs. MongoDB: Choosing a Data Management Solution
  5. 指定WebService访问的语言
  6. 读取Jar包中的资源问题探究
  7. SSIS -->> Variable
  8. ASP.NET MVC 教程
  9. javax.el.PropertyNotFoundException: Property 'aDesc' not found on type
  10. POJ 1322 Chocolate
  11. 【2017集美大学1412软工实践_助教博客】团队作业9——测试与发布(Beta版本)
  12. Markdown 编写规范
  13. Android系统架构与系统源码目录
  14. Swift.Operator-and-Items-in-Swift(1)
  15. 《修炼之道:.NET开发要点精讲》读书笔记(三)
  16. Spring 自动装配及其注解
  17. python入门学习2
  18. 【POJ3017】Cut the Sequence
  19. 洛谷P2879 [USACO07JAN]区间统计Tallest Cow
  20. Tensorflow高级封装

热门文章

  1. LeetCode-4. 两个排序数组的中位数(详解)
  2. [日常] NOIP前集训日记
  3. 【IntelliJ IDEA】使用idea解决新建jsp文件而找不到jsp文件模版的新建选项
  4. Beta 第四天
  5. C语言的第一次作业总结
  6. 项目Alpha冲刺Day6
  7. VMware安装时Error 1324. The path My Documents contains a invalid character的原因和解决方法
  8. 第十一条:谨慎的覆盖clone()方法
  9. Flask 文件和流
  10. maven创建web工程