Мне довелось использовать разные инструменты для парсинга html, но недавно я открыл для себя библиотеку jsoup и остался ей весьма доволен. Впечатляет скорость работы в сочетании с богатством возможностей. Библиотека позвояет строить документ из "не совсем валидного" html, использовать xpath и css селекторы а также прямую навигацию по DOM-дереву, получать данные из элементов DOM в виде html-фрагментов или "очищенного" текста.
Приведу простой пример:
Тут мы создаём документ из url, css-селектором вынимаем из этого документа строки некоторой таблицы и в цикле обходим строки (кроме первой) для того чтобы получить значения первой и второй колонки а затем сложить их к себе в HashMap. Задача, как видим весьма распространённая а решение очень простое.
- class TableParser {
- private HashMap map = new HashMap();
- private final String url = "http://site.com"
- public HtmlParser() {
- try {
- Document doc = Jsoup.connect(url).get();
- Elements rows = doc.select("div#leftCol table.main tr");
- for (int i=1; i<rows.size();i++) {
- Element row = rows.get(i);
- map.put(row.child(0).text().trim(), row.child(1).text());
- }
- } catch (Exception e) {
- e.printStackTrace(System.err);
- }
- }
- public HashMap getMap() {
- return this.map;
- }
- }