JAVA爬虫-Jsoup + JsoupXPath

JsoupXPath是基于Jsoup的拓展,使用路径的形式解析XML和HTML文档。核心类为JXDocument。JsoupXPath的节点对象JXNode不仅可以获取标签节点,还可以获取属性节点。

需要在引入Jsoup依赖之后引入JsoupXpath依赖


    org.jsoup
    jsoup
    1.11.3



    cn.wanghaomiao
    JsoupXpath
    2.2.1

创建JXDocument的方法:

//使用Jsoup的Document对象创建JXDocument
JXDocument jxDocument = JXDocument.create(Document document);
//使用Jsoup的Elements对象创建JXDocument
JXDocument jxDocument = new JXDocument(Elements elements);
//使用HTML文本创建JXDocument
String html = "网页设计师";
JXDocument jxDocument = JXDocument.create(html);

常用方法

//找到路径返回所有满足的节点对象集合,类似Document的select()方法
List selN(String  xpath)
//找到路径返回的第一个满足的节点对象,类似Document的selectFirst()方法
JXNode selNOne(String xpath)

在控制台里右击标签,可以复制到这个标签的XPath。

JAVA爬虫-Jsoup + JsoupXPath_第1张图片

复制出来的XPath如下所示,根据这个XPath只能获取到刚刚选中的那个

  • //*[@id="internationalHeader"]/div[1]/div/div[1]/ul/li[9]
    

    根据XPath的规范修改之后,就可以获取到这个

      下全部的
    • //*[@id="internationalHeader"]/div[1]/div/div[1]/ul/li[*]

      例如:

      JAVA爬虫-Jsoup + JsoupXPath_第2张图片

       JXNode可以调用getElement或asElement()获得Jsoup的Element对象

      public static void main(String[] args) throws IOException {
      	Document document = Jsoup.connect("https://www.bilibili.com/").get();
      	JXDocument jxDocument = JXDocument.create(document);
      	List jxNodes = jxDocument.selN("//*[@id=\"internationalHeader\"]/div[1]/div/div[1]/ul/li[*]");
      	for(JXNode jxNode : jxNodes){
      		Element element = jxNode.asElement();
      		System.out.println(element.text());
      	}
      }

      JAVA爬虫-Jsoup + JsoupXPath_第3张图片

       

  • 你可能感兴趣的:(爬虫,java,爬虫,jsoup)