zoukankan      html  css  js  c++  java
  • HtmlUnit的学习笔记

     官方网址:http://htmlunit.sourceforge.net/

     有时候你需要模拟浏览器,HtmlUnit 就是个不错的选择

     像 网页中js 中的内容,如果你想用爬虫爬取的话,用Jsoup 就不怎么行了,但是HtmlUnit 就是个不错的选择

     (1) HtmlUnit模拟表单提交

      下面的代码是模拟在百度里搜索 "root"  得到的page2 就是百度搜索"root" 的结果

    package com.xinsearch;
    
    import java.io.IOException;
    import java.net.MalformedURLException;
    
    import com.gargoylesoftware.htmlunit.BrowserVersion;
    import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
    import com.gargoylesoftware.htmlunit.WebClient;
    import com.gargoylesoftware.htmlunit.html.HtmlForm;
    import com.gargoylesoftware.htmlunit.html.HtmlPage;
    import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
    import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
    
    public class Test {
        public static void main(String[] args) {
        
            try {
                WebClient client=new WebClient(BrowserVersion.FIREFOX_10);
                HtmlPage page=client.getPage("http://www.baidu.com/");
                HtmlForm form = page.getFormByName("f");
                HtmlTextInput text= form.getInputByName("wd");
                HtmlSubmitInput submit = form.getInputByValue("百度一下");
                text.setValueAttribute("root");
                HtmlPage page2=submit.click();
                System.out.println(page2.asXml());
                
                
                
                
            } 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();
            }
            
            
        }
    }

    结果就不列出了
    (2) 得到元素的方法有很多 下面写的是根据 Attribute 的方法 

      List<HtmlElement> body=page.getDocumentElement().getElementsByAttribute("div", "class", "item");

      

        try {
            WebClient webClient=new WebClient(BrowserVersion.FIREFOX_10);
            //这一步是创建一个模拟浏览器,使用浏览器版本为FIREFOX10.0,可以更改,如果
            //使用这个浏览器不能解决问题的时候,可以更换CHROME or IE
                    URL url;
                    
                        url = new URL("http://www.baidu.com");
                
            //创建一个url连接
                    HtmlPage page = webClient.getPage(url);
            //使用模拟浏览器对这个链接发送请求
            HtmlInput input=(HtmlInput)page.getDocumentElement().getElementsByAttribute("input", "id",     "kw").get(0);
            //获取输入框
                    input.setAttribute("value", "哪儿买");
            //然后设置输入框的属性值
                    HtmlInput active=(HtmlInput) page.getDocumentElement().getElementsByAttribute("input","id","su").get(0);
            //获取你需要操纵的那个按钮
                    HtmlPage result=active.click();
            //然后触发按钮上绑定的javascript事件,得到一个新的页面,这个页面就是从服务器//响应得到的
                    System.out.println(result.asXml());
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
  • 相关阅读:
    【转】BP神经网络
    【转】Matlab的regionprops详解
    【转】本人常用资源整理(ing...)
    【转】LDA-linear discriminant analysis
    [转]推荐几个机器学习算法及应用领域相关的中国大牛:
    【转】机器学习资料推荐
    《转贴》机器学习 机器视觉 图像处理 牛人牛站
    [转]LLE
    UVA10651
    UVA10051
  • 原文地址:https://www.cnblogs.com/tomcattd/p/2850662.html
Copyright © 2011-2022 走看看