Htmlunit是一款模拟浏览抓取页面内容的Java框架,具有js解析引擎(rhino),可以解析页面的js脚本,得到完整的页面内容,特殊适合于这种非完整页面的站点抓取

 /**
      * 获取页面的TITLE、XML代码、文本
      */
     @Test
     public void connNet() throws Exception {
         String str;
         // 创建一个webclient
         WebClient webClient = new WebClient(BrowserVersion.FIREFOX_24);
         // htmlunit 对css和javascript的支持不好,所以请关闭之
         webClient.getOptions().setJavaScriptEnabled(false);
         webClient.getOptions().setCssEnabled(false);
         // 获取页面
         HtmlPage page = webClient.getPage("http://www.baidu.com/");
         // 获取页面的TITLE
         str = page.getTitleText();
         System.out.println(str);
         // 获取页面的XML代码
         str = page.asXml();
         System.out.println(str);
         // 获取页面的文本
         str = page.asText();
         System.out.println(str);
         // 关闭webclient
         webClient.closeAllWindows();
     }

     /**
      * 找到页面中特定的元素
      */
     @Test
     public void getInput() throws Exception {
         // 创建webclient
         WebClient webClient = new WebClient(BrowserVersion.CHROME);
         // htmlunit 对css和javascript的支持不好,所以请关闭之
         webClient.getOptions().setJavaScriptEnabled(false);
         webClient.getOptions().setCssEnabled(false);
         HtmlPage page = (HtmlPage) webClient.getPage("http://www.baidu.com/");
         // 通过id获得"百度一下"按钮
         HtmlInput btn = (HtmlInput) page.getHtmlElementById("su");
         System.out.println(btn.getDefaultValue());
         // 关闭webclient
         webClient.closeAllWindows();
     }

     /**
      * 元素检索
      */
     @Test
     public void search() throws Exception {
         // 创建webclient
         WebClient webClient = new WebClient(BrowserVersion.CHROME);
         // htmlunit 对css和javascript的支持不好,所以请关闭之
         webClient.getOptions().setJavaScriptEnabled(false);
         webClient.getOptions().setCssEnabled(false);
         HtmlPage page = (HtmlPage) webClient.getPage("http://www.baidu.com/");
         // 查找所有div
         List<?> hbList = page.getByXPath("//div");
         HtmlDivision hb = (HtmlDivision) hbList.get(0);
         System.out.println(hb.toString());
         // 查找并获取特定input
         List<?> inputList = page.getByXPath("//input[@id='su']");
         HtmlInput input = (HtmlInput) inputList.get(0);
         System.out.println(input.toString());
         // 关闭webclient
         webClient.closeAllWindows();
     }

     /**
      * 提交搜索
      */
     @Test
     public void submitForm() throws Exception {
         // 创建webclient
         WebClient webClient = new WebClient(BrowserVersion.CHROME);
         // htmlunit 对css和javascript的支持不好,所以请关闭之
         webClient.getOptions().setJavaScriptEnabled(false);
         webClient.getOptions().setCssEnabled(false);
         HtmlPage page = (HtmlPage) webClient.getPage("http://www.baidu.com/");
         // 获取搜索输入框并提交搜索内容
         HtmlInput input = (HtmlInput) page.getHtmlElementById("kw");
         System.out.println(input.toString());
         input.setValueAttribute("博客园");
         System.out.println(input.toString());
         // 获取搜索按钮并点击
         HtmlInput btn = (HtmlInput) page.getHtmlElementById("su");
         HtmlPage page2 = btn.click();
         // 输出新页面的文本
         System.out.println(page2.asText());
     }

htmlUtil 网页爬取工具的更多相关文章

  1. HtmlParse:一款超轻量级的HTML文件解析和爬取工具

    HtmlParse 是一款基于windwos平台的HTML文档解析工具,可快速构建DOM树,从而轻松实现网页元素的爬取工作.DOM树就是一个HTML文档的节点树,每个节点由:标签(Tag).属性(At ...

  2. 使用urllib进行网页爬取

    # coding=gbk # 抓取开奖号码 # url:http://datachart.500.com/dlt/zoushi/jbzs_foreback.shtml ''' 对网页逐行迭代,找到目标 ...

  3. WebFetch 是无依赖极简网页爬取组件

    WebFetch 是无依赖极简网页爬取组件,能在移动设备上运行的微型爬虫. WebFetch 要达到的目标: 没有第三方依赖jar包 减少内存使用 提高CPU利用率 加快网络爬取速度 简洁明了的api ...

  4. 动态网页爬取例子(WebCollector+selenium+phantomjs)

    目标:动态网页爬取 说明:这里的动态网页指几种可能:1)需要用户交互,如常见的登录操作:2)网页通过JS / AJAX动态生成,如一个html里有<div id="test" ...

  5. Python和BeautifulSoup进行网页爬取

    在大数据.人工智能时代,我们通常需要从网站中收集我们所需的数据,网络信息的爬取技术已经成为多个行业所需的技能之一.而Python则是目前数据科学项目中最常用的编程语言之一.使用Python与Beaut ...

  6. Node.js 动态网页爬取 PhantomJS 使用入门(转)

    Node.js 动态网页爬取 PhantomJS 使用入门 原创NeverSettle101 发布于2017-03-24 09:34:45 阅读数 8309  收藏 展开 版权声明:本文为 winte ...

  7. Java开源网页抓取工具httpClient以及jsoup

    网上看到不错的Java网页抓取工具和库 先记录一下 使用java开源工具httpClient及jsoup抓取解析网页数据

  8. 爬虫入门(三)——动态网页爬取:爬取pexel上的图片

    Pexel上有大量精美的图片,没事总想看看有什么好看的自己保存到电脑里可能会很有用 但是一个一个保存当然太麻烦了 所以不如我们写个爬虫吧(๑•̀ㅂ•́)و✧ 一开始学习爬虫的时候希望爬取pexel上的 ...

  9. 【Python开发】网页爬取心得

    转载:python 爬虫抓取心得分享 title:python 爬虫抓取心得分享 0x1.urllib.quote('要编码的字符串')如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以 ...

随机推荐

  1. Xmanager 远程到ubuntu失败

    原因: 22端口没打开 SSH server服务没打开 解决办法: 打开22端口 如果没安装过防火墙:sudo apt-get install ufw ,sudo ufw enable 启动端口:su ...

  2. dede list列表页和文章页分别使用if else

    标签: dede 2015-01-25 19:33 755人阅读 评论(0) 收藏 举报 分类: [ Dede ](20) 版权声明:本文为博主原创文章,未经博主允许不得转载. list列表页中使用i ...

  3. struts文件异常Included file cannot be found

    1.命名规范,都是采用struts-xxx.xml文件,即以struts开头 2.file的路径不要以/开头,在其他版本是以/开头的 <include file="/com/bjsxt ...

  4. python实现冒泡排序和快速排序

    冒泡排序和快排的python实现: data = [1, 3, 5, 10, 4, 7] times = 0 "冒泡排序" for i in range(len(data)): f ...

  5. C# 内置 DateTime类详解

    C# 内置 DateTime类详解 摘抄自微软官方文档,用来方便自己查阅:网址:https://msdn.microsoft.com/zh-cn/library/system.datetime(v=v ...

  6. F5负载均衡虚拟服务器配置FTP端口访问不了

    F5配置ip映射到地址池ftp服务,访问报错:FTP出现"数据 Socket 错误: 连接被拒""ftp 列表错误"解决办法 1条回答 FTP的vs类型需要选择 ...

  7. JVM-垃圾收集的过程

    JDK1.7 JVM的垃圾收集算法有 1. 标记-清除算法: 2. 复制算法:在商业虚拟机都是使用这种算法来回收新生代的 3. 标记-整理算法: JDK1.7 JVM的垃圾收集器有 1. Serial ...

  8. Request和Response

    1 简介 web服务器收到客户端的http请求,会针对每一个请求,分别创建一个用于代表请求的request对象和代表响应的response对象. request和response对象既然代表请求和响应 ...

  9. Python爬虫进阶(Scrapy框架爬虫)

    准备工作:           配置环境问题什么的我昨天已经写了,那么今天直接安装三个库                        首先第一步:                           ...

  10. 【JDK1.8】JDK1.8集合源码阅读——Set汇总

    一.前言 这一篇里,我将对HashSet.LinkedHashSet.TreeSet进行汇总分析,并不打算一一进行详细介绍,因为JDK对Set的实现进行了取巧.我们都知道Set不允许出现相同的对象,而 ...