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>*");
      

    没有修不好的电脑
  • 相关阅读:
    opencv-0-项目启程
    [SketchUp]-绘制自己的家
    C51_PID 水温控制系统
    latex-列表环境
    nCOV 数据简要分析 (0326)
    引入OpenCV导致私有内存巨大
    【带着canvas去流浪(15)】threejs fundamentals翻译系列1-scene graph
    【一统江湖的大前端(9)】TensorFlow.js 开箱即用的深度学习工具
    【一统江湖的大前端(8)】matter.js 经典物理
    2019年12月前端面经及总结(西安,杭州)
  • 原文地址:https://www.cnblogs.com/duniqb/p/12702478.html
Copyright © 2011-2022 走看看