Таблица извлечения JSoup в виде CSV с финансового веб-сайта

Моя проблема заключается в следующем: я хочу извлечь таблицу из html-файла, загруженного с веб-сайта с помощью JSoup, и вернуть его в виде csv-файла. (Данные являются историческими ценами на акции).

Вот веб-сайт: http://www.finanzen.ch/kurse/historisch/Actelion/VIRTX/12.6.2013_17.9.2013

Он на немецком языке, так что, надеюсь, это не проблема. Я хочу извлечь таблицу со всеми числами.

У меня есть следующий код:

    Document doc = Jsoup.connect("http://www.finanzen.ch/kurse/historisch/Actelion/VIRTX/12.6.2013_17.9.2013").get();

    for (Element table : doc.select("table.Historische Kurse Actelion Ltd.*")) {
        for (Element row : table.select("tr")) {
            Elements tds = row.select("td");
            if (tds.size() > 6) {
                System.out.println(tds.get(0).text() + ":" + tds.get(1).text());
            }
        }
    }

Я получил этот код из другой статьи StackOverflow. Проблема в том, что я ничего не знаю о JSoup и совсем новичок в программировании на Java. Буду очень признателен за вашу помощь.


person user2058490    schedule 17.09.2013    source источник
comment
Библиотека Apache Commons CSV обеспечивает создание (и анализ) значений, разделенных запятыми (CSV), и TAB. -файлы с разделителями. Релиз 1.1 только что вышел в этом месяце (2014-11).   -  person Basil Bourque    schedule 28.11.2014


Ответы (1)


Попробуй это

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 Test {

    public static void main(String[] args) {

        String url = "http://www.finanzen.ch/kurse/historisch/Actelion/VIRTX/12.6.2013_17.9.2013";
        Document doc;
        try {
            doc = Jsoup.connect(url).get();
            Element table = doc
                    .select("div.mainwrapper div.main_background div.main_left")
                    .get(0).child(3);
            Elements rows = table.select("tr");

            Elements ths = rows.select("th");

            String thstr = "";
            for (Element th : ths) {
                thstr += th.text() + " ";
            }
            System.out.println(thstr);

            for (Element row : rows) {
                Elements tds = row.select("td");
                for (Element td : tds) {
                    System.out.println(td.text());  // --> This will print them
                                                    // individually
                }
                System.out.println(tds.text()); // --> This will print everything
                                                // in the row
            }
            // System.out.println(table);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
person Alkis Kalogeris    schedule 17.09.2013