如何在Jsoup中获取特定html元素的内容?

时间:2016-12-13 06:32:10

标签: java html parsing web-scraping jsoup

我正在尝试使用jsoup从维基百科获取一个表格及其内容/格式。但是,当我运行此代码时,我在第29行遇到错误:

  

project.wikiclass.main(wikiclass.java:29)中的线程“main”java.lang.NullPointerException中的异常

我不知道有什么方法可以获取数据。我目前使用的名称似乎不对。该表位于:

https://en.wikipedia.org/wiki/Liverpool_F.C.#First-team_squad

在inspect元素中,所需的最外层元素称为<table border="0">

但是我无法使用名称border获取id。如果有人能告诉我如何获得这个元素或者它的真实名称是有用的。通过转到链接页面并突出显示名称列表并使用inspect元素,可以找到该元素。

import java.io.IOException;    
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class wikiclass {

  public static void main(String[] args) {

    Document doc;
    try {

        // need http protocol
        doc = Jsoup.connect("https://en.wikipedia.org/wiki/Liverpool_F.C.").get();

        // get page title
        String title = doc.title();
        System.out.println("title : " + title);

        //make html file
        StringBuffer html = new StringBuffer();

        // get all links
        String table = doc.getElementById("border").outerHtml();
        System.out.println(table);
        /*for (Element link : links) {

            // get the value from href attribute
            System.out.println("\nlink : " + link.attr("href"));
            System.out.println("text : " + link.text());

        }*/

    } catch (IOException e) {
        e.printStackTrace();
    }

  }

}

1 个答案:

答案 0 :(得分:1)

我认为你有NPE,因为Jsoup无法找到这个元素。

你可以试试这个

 Elements table = doc.select("div#bodyContent table.infobox");

然后迭代ech元素并获取信息