zoukankan      html  css  js  c++  java
  • Java爬虫之 Jsoup 的使用

    解析URL和文件

    • public void testUrl() throws Exception {
          // 解析URL地址,参数是url和超时时间
          Document doc = Jsoup.parse(new URL("http://www.baidu.com"), 1000);
          // 使用标签选择器获取title标签内容
          String title = doc.getElementsByTag("title").first().text();
          System.out.println(title);
      }
      
       public void testFile() throws Exception {
          // 解析文件
          Document doc = Jsoup.parse(new File("...test.html"), "utf8");
          String title = doc.getElementsByTag("title").first().text();
          System.out.println(title);
      }
      

    使用 dom 方式遍历文档

    • getElementById
      public void testDOM() throws Exception {
          Document doc = Jsoup.parse(new URL("http://www.baidu.com"), 1000);
          Element element = doc.getElementById("back");
          System.out.println(element.text());
      }
      
    • getElementsByTag
      Element element = doc.getElementsByTag("a").first();
      System.out.println(element.text());
      
    • getElementsByClass
      Element element = doc.getElementsByClass("all a_js").first();
      System.out.println(element.text());
      
    • getElementsByAttribute
      Element element = doc.getElementsByAttribute("XXX").first();
      System.out.println(element.text());
      
    • getElementsByAttributeValue
      // 参数1是属性名,参数2是属性值
      Element element = doc.getElementsByAttributeValue("href", "http://www.baidu.com").first();
      System.out.println(element.text());
      

    从元素中获取数据

    首先获取元素

    Element element = doc.getElementById("back");
    
    • 获取id
      System.out.println(element.id());
      
    • 获取className(s)
      classNames得到的是一个Set,表示该元素不止一个class
      System.out.println(element.className());
      
    • 获取属性的值attr
      System.out.println(element.attr("id"));
      
    • 获取所有属性attributes
      System.out.println(element.attributes());
      
    • 获取文本内容text
      System.out.println(element.text());
      

    Selector 选择器组合使用

    元素名直接写,id前写#,class前写.

    • 元素+id
      Element element = doc.select("li#back").first();
      System.out.println(element.text());
      
    • 元素+class
      Element element = doc.select("li.li_6").first();
      System.out.println(element.text());
      
    • 元素+属性名
      Element element = doc.select("li[class]").first();
      System.out.println(element.text());
      
    • 任意组合
      只限于同级
      
    • ancestor child:查找某个元素下级子元素,可跨代
      Elements element = doc.select("li a .s_name");
      
    • parent > child:查找父元素的直接子元素
      Elements element = doc.select(".fdnav>ul>li");
      
    • parent > *:查找某个父元素所有直接子元素
      Elements element = doc.select(".innr>*");
      

    没有修不好的电脑
  • 相关阅读:
    LINNX联网配置文件
    linux文件系统配置文件
    linux引导和登录/注销配置文件
    LINUX访问文件配置
    LINUX配置文件介绍
    tcpdump的表达式介绍
    tcpdump命令介绍
    DNS客户端配置文件/etc/resolv.conf
    tcpdump概述
    LINUX普通猫的拔号工具介绍
  • 原文地址:https://www.cnblogs.com/duniqb/p/12702478.html
Copyright © 2011-2022 走看看