В общем, стоит задача спарсить данные заголовков новостей и привязать к заголовкам ссылку на новости с сайта. Новости заключены в контейнер news, а заголовки(краткое описание) заключены в теге a с атрибутом href (В ссылку в общем). При парсинге выдаёт полностью весь контейнер news включая сами новости и заголовки общим текстом. Вот фрагмент кода, а так же фрагмент html кода:
class ParseText extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
String str = " ";
try {
Document document = Jsoup.connect(strings[0]).get();
Elements elements = document.select("desc");
}catch (IOException e){
e.printStackTrace();
}
return str;
}
}
class ParseTitle extends AsyncTask<Void, Void, HashMap<String,String>>
{
@Override
protected HashMap<String, String> doInBackground(Void... voids) {
HashMap<String, String> hashMap=new HashMap<>();
try {
Document document = Jsoup.connect("http://ktits.ru").get();
Elements elements = document.select("div[class=news]");
for(Element element:elements) {
Elements elements1 = element.select("div[class=title]");
hashMap.put(element.text(), elements1.attr("a:href"));
}
} catch (IOException e) {
e.printStackTrace();
}
return hashMap;
}
}
Фрагмент html:
Всё просто когда вы используете селектор "div[class=news]" вы получаете список Elements, который содержит только один Element, а когда используете "div[class=title]", то получаете список из 7ми, и в коде пытаетесь впихнуть всё это дело одним put'ом.
Document document = Jsoup.connect("http://ktits.ru").get();
Elements elements = document.select("div[class=news]").get(0).getElementsByTag("a");
for (Element element : elements) {
hashMap.put(element.getElementsByClass("title").text(), element.attr("href"));
}
Продвижение своими сайтами как стратегия роста и независимости