Проблема с парсингом jsoup

158
04 ноября 2019, 19:50

В общем, стоит задача спарсить данные заголовков новостей и привязать к заголовкам ссылку на новости с сайта. Новости заключены в контейнер 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:

Answer 1

Всё просто когда вы используете селектор "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"));
                }
READ ALSO
Bulma переопределить css [дубликат]

Bulma переопределить css [дубликат]

На данный вопрос уже ответили:

145
Как передать живой аудиопоток с javascript на python?

Как передать живой аудиопоток с javascript на python?

Есть проект FlaskНадо реализовать передачу звука в живом режиме

144
Отключился Jquery на странице создания поста в админке Wordpress

Отключился Jquery на странице создания поста в админке Wordpress

Отключился Jquery на странице создания поста в админке WordpressКонсоль выдает море ошибок связанных с тем, что нет данной библиотеки

164