Jsoup - расположение табличных данных с сайта - PullRequest
0 голосов
/ 12 октября 2018

Я хочу получить таблицу от https://ms.wikipedia.org/wiki/Malaysia. Вот таблица, которую я хочу получить с веб-сайта.

Table

Но результатэто не то, что я хочу.

myResult

У меня 2 вопроса :

1-й вопрос как мне их организовать?как стол с расположением ряд и столбец аналогично таблице из моей картины.Ниже приведен мой исходный код о том, как я получаю данные.

String URL = "https://ms.wikipedia.org/wiki/Malaysia";
Document doc = Jsoup.connect(URL).get();
Elements trs = doc.select("#mw-content-text > div > table:nth-child(148)");
String currentRow = null;
for (Element tr : trs){
    Elements tdDay = tr.select("tr:has(th)");
        currentRow = tdDay.text();
        System.out.print(currentRow);
}

2-й вопрос взят из моего исходного кода, является ли это наилучшим способом удаления определенных данных из всех элементов, таких какнапример, элемент с веб-сайта https://ms.wikipedia.org/wiki/Malaysia с использованием

Elements trs = doc.select("#mw-content-text > div > table:nth-child(148)");

Поскольку с веб-сайта есть 3 табличный класс с именем wikitable.<table class="wikitable">.Так как я могу назвать только конкретный стол?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018
public static void main(String[] args) throws IOException{
    String URL = "https://ms.wikipedia.org/wiki/Malaysia";
    Document doc = Jsoup.connect(URL).get();
    //Select the table which is under the header containing "Trivia" 
    //having the value "wikitable" for the class attribute
    Element table = doc.select("h2:contains(Trivia)+[class=\"wikitable\"]").first();
    //then select each row of the table 
    Elements trs = table.select("tr");
    //for each row get first and second child corresponding to column 1 and two of table
    for (Element tr : trs){
        Element th = tr.child(0);
        Element td = tr.child(1);
        System.out.printf("%-40s %-40s%n",th.text(), td.text());
    }
}
0 голосов
/ 17 октября 2018

Поскольку веб-сайт, который вы предоставляете, содержит wikitable.Таким образом, вы можете попытаться найти селектор данных из таблицы, и я обнаружил, что есть <td> и <th>.

for (int i = x; i < x; i++) {
    Elements trs = doc.select("#mw-content-text > div > table:nth-child(148) > tbody > tr:nth-child(" + i + ") > th");
    Elements tds = doc.select("#mw-content-text > div > table:nth-child(148) > tbody > tr:nth-child(" + i + ") > td");

, попробуйте это, пока x в циклах forномер строки в таблице, чтобы можно было очистить данные

...