htmluinit+jsoup 网络爬虫

网络爬虫个人笔记

1.所需要的jar包

htmluinit.jar (可理解为无页面的浏览器,可以模拟浏览器各种操作,可执行js ,处理ajax请求后页面等)

jsoup.jar(处理静态页面,转换为dom文档,进行操作)

2.使用实例

2.1htmlunit

      

WebClientwebClient= newWebClient(BrowserVersion.CHROME);//创建浏览器

       webClient.getOptions().setJavaScriptEnabled(false);//禁用js

       webClient.getOptions().setCssEnabled(false);//禁用css

       //添加cookie

       CookieManagercookieManager= newCookieManager();

       cookieManager.addCookie(new Cookie("tieba.baidu.com", "BDUSS", "具体值"));

       webClient.setCookieManager(cookieManager);

       // 获取当前页的所有帖子元素。返回 DOM节点列表

       HtmlPagepage= webClient.getPage("http://tieba.baidu.com/mo/m?kw=java");

       DomNodeList<DomNode>iList = page.querySelectorAll(".i");//参数为各种选择器,同JQ

       // 选择 p 元素

       DomNodep =iList[0].querySelector("p");//单个节点

       p.asText()//返回元素文本    <a>文本</a>             返回   文本   

       p.asXml()//返回元素xml文件 <a>文本</a>            返回  <a>文本</a>

       //获取a元素连接

       HtmlAnchora = (HtmlAnchor) i.querySelector("a");

       Stringhref = a.getAttribute("href");

       //获取按钮,模拟点击

       HtmlInputsub1 = (HtmlInput) tPage.querySelector("input[name=sub1]");

       sub1.click();

 处理ajax返回延迟问题

HtmlPage page2 = btn.click();      

for (inti = 0; i < 20; i++) {

       String text= page2.querySelector("#textarea1").asText();

            if (!text.trim().isEmpty()){

             System.out.println(page2.asXml()); 

                  break;

            }

             synchronized (page2) {

                  page.wait(500);

             }

   }


2.2jsoup

    Jsoup.parse解析HTML字符串,如Jsoup.parse("<html><head><title>Firstparse</title></head>")

    Jsoup.connect解析url网站地址,如Jsoup.connect(http://www.baidu.com).get()

 

  //本地文件读取方式

    File input = new File("/tmp/input.html"); 

    Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");

    //网络网页读取方式

    Document doc = Jsoup.connect("http://www.oschina.net/")  

    .data("query", "Java")   // 请求参数 

    .userAgent("I ’ mjsoup") // 设置 User-Agent  

    .cookie("auth", "token") // 设置 cookie  

    .timeout(3000)           // 设置连接超时时间 

    .post();                 // 使用 POST 方法访问 URL  

    Document doc = Jsoup.connect("http://www.baidu.com").timeout(10000).get();  

        Elementslinks = doc.getElementsByTag("a");

        for (Element link : links) { 

        StringlinkHref = link.attr("href"); 

        StringlinkText = link.text();

        System.out.println("linkHref:  "+linkHref);

        System.out.println("linkText:  "+linkText);

        }   


2.3htmlunit与jsoup结合方式

  

 DomNode p = i.querySelector("h4a");

    String xml =i.asXml();

    Document dom= Jsoup.parse(xml, "UTF-8");

    Elements elements=dom.select("img");

    String img_url=elements.get(0).attr("data-original");


2.4 Frame页面问题处理

HtmlPage framePage(HtmlPage)p.getFrameByName("FrameName").getEnclosedPage();

个人爬虫项目练习(不涉及多线程):http://download.csdn.net/detail/ab2361936/9767254

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值