Jsoup парсинг тегов

 
 
 
Сообщения:14
Здравствуйте, новичок в Java программировании помогите пожалуйста разобраться в чем ошибка.

Нужно спарсить с сайта все теги h6 (их больше чем 1).

При написании :
String h6 = doc.getElementsByTag("h6").text();
System.out.println("H6: "+h6);

Выводятся значения тегов но в одну строку.
При написании:
Elements tagh6 = doc.getElementsByTag("h6");
	    if (tagh6!=null) {
	    	System.out.println("H6: "+tagh6);
	    }

Выводится <h6>значение</h6> но зато разбивается по строкам.

Как сделать так что бы значения тегов шли в отдельной строке вида:
H6: значение_1
H6: значение_2
H6: значение_3
H6: значение_4

И если возможно скажите как можно подсчитать сколько число тегов получилось и количество символов в каждом теге.
 
 
Сообщения:258
Elements - это коллекция элементов Element (в частности, ArrayList) и работать с ней нужно как с коллекцией. Т.е., например, кол-во найденных тегов доступно по tagh6.size()

Для подсчёта кол-ва символов отдельно в каждом теге нужно брать внутренности из каждого Element в коллекции Elements.

API в помощь:
https://jsoup.org/apidocs/org/jsoup/select/Elements.html

https://jsoup.org/apidocs/org/jsoup/nodes/Element.html

"Любая техническая система должна быть идиотоустойчивой" (с) один из университетских преподов
 
 
Сообщения:14
Спасибо, все сработало, а подскажите пожалуйста как можно подсчитать количество Keywords для сайта, если они отделяются запятыми ?
 
 
Сообщения:1339
emkostiplastikov:
Спасибо, все сработало, а подскажите пожалуйста как можно подсчитать количество Keywords для сайта, если они отделяются запятыми ?

Посчитайте количество запятых и сделайте +1 к этому.

datatalks.ru - анализ данных, статистика, машинное обучение
 
 
Сообщения:14
stolzen:
Посчитайте количество запятых и сделайте +1 к этому.

Не смог найти как считать определенные знаки, подскажите что нужно добавить.
Вот код для вывода в терминал Keywords и подсчет символов:
	    Elements metaKeywords = doc.select("meta[name=keywords]");
	    
	    if (metaKeywords!=null) {
	    	System.out.println("Keywords: " + metaKeywords.attr("content"));
	    	System.out.println("Keywords количество символов: " + metaKeywords.attr("content").length());
	    }
 
 
Сообщения:258
Может вместо подсчёта запятых проще использовать String#split?

"Любая техническая система должна быть идиотоустойчивой" (с) один из университетских преподов
 
 
Сообщения:1339
Может быть. По сути - то же самое.

datatalks.ru - анализ данных, статистика, машинное обучение
 
 
Сообщения:14
Спасибо получилось посчитать запятые и прибавить еще один.
Elements metaKeywords = doc.select("meta[name=keywords]");
	    
	    if (metaKeywords!=null) {
	    	System.out.println("Keywords: " + metaKeywords.attr("content"));
	        int before = metaKeywords.attr("content").length();
	        int after = metaKeywords.attr("content").replaceAll("[,.]", "").length();
	        System.out.println("Количество Keywords: " + (before - after + 1));
	    }


А со split не смог разобраться. Если можете, напишите как можно было бы подсчитать keywords со split
Изменен:12 дек 2016 23:55
 
 
Сообщения:258
String#split разделяет строку на массив подстрок по указанному разделителю. Длина этого массива - и есть количество keywords. В документации даже пример есть:
Quote:

The string "boo:and:foo", for example, yields the following results with these expressions:

Regex Result
: { "boo", "and", "foo" }
o { "b", "", ":and:f" }

"Любая техническая система должна быть идиотоустойчивой" (с) один из университетских преподов
Изменен:13 дек 2016 03:00
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет