Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
tortmann1
0 / 0 / 0
Регистрация: 26.07.2015
Сообщений: 1
#1

Парсинг на jsoup - Программирование Android

26.07.2015, 13:37. Просмотров 833. Ответов 1
Метки нет (Все метки)

Добрый всем день!
Заминка такая, уже весь гугл перелопатил, синих ссылок в браузере не осталось.
Есть пример парсинга сайта:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
public class MainActivity extends Activity {
 
        // благодоря этому классу мы будет разбирать данные на куски
        public Elements title;
        // то в чем будем хранить данные пока не передадим адаптеру
        public ArrayList<String> titleList = new ArrayList<String>();
        // Listview Adapter для вывода данных
        private ArrayAdapter<String> adapter;
        // List view
        private ListView lv;
 
        @Override
        protected void onCreate(Bundle savedInstanceState) {
 
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                // определение данных
                lv = (ListView) findViewById(R.id.listView1);
                // запрос к нашему отдельному поток на выборку данных
                new NewThread().execute();
                // Добавляем данные для ListView
                adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, titleList);
        }
 
        /** А вот и внутрений класс который делает запросы, если вы не читали статьи у меня в блоге про отдельные
         * потоки советую почитать */
        public class NewThread extends AsyncTask<String, Void, String> {
 
                // Метод выполняющий запрос в фоне, в версиях выше 4 андроида, запросы в главном потоке выполнять
                // нельзя, поэтому все что вам нужно выполнять - выносите в отдельный тред
                @Override
                protected String doInBackground(String... arg) {
 
                        // класс который захватывает страницу
                        Document doc;
                        try {
                                // определяем откуда будем воровать данные
                                doc = Jsoup.connect("http://freehabr.ru/").get();
                                // задаем с какого места, я выбрал заголовке статей
                                title = doc.select(".title");
                                // чистим наш аррей лист для того что бы заполнить
                                titleList.clear();
                                // и в цикле захватываем все данные какие есть на странице
                                for (Element titles : title) {
                                        // записываем в аррей лист
                                        titleList.add(titles.text());
                                }
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                        // ничего не возвращаем потому что я так захотел)
                        return null;
                }
 
                @Override
                protected void onPostExecute(String result) {
 
                        // после запроса обновляем листвью
                        lv.setAdapter(adapter);
                }
        }
}
Но вот беда, код рабочий, но почему в listview заполняется только первая строка?
Мне надо с сайта http://www.red--sky.ru/ спарсить новости.
Выглядит так:
Java
1
2
3
4
5
6
7
8
9
 doc = Jsoup.connect("http://www.red--sky.ru/").get();
                                // задаем с какого места, я выбрал заголовке статей
                                title = doc.select("#main_wrapper > div.container.boxed.blog.normal-page.container-wrap > div > div.col-lg-8 > div:nth-child(1) > div.blog-twrapper > div.blog-content");
                                // чистим наш аррей лист для того что бы заполнить
                                titleList.clear();
                                // и в цикле захватываем все данные какие есть на странице
                                for (Element titles : title) {
                                        // записываем в аррей лист
                                        titleList.add(titles.text());
В результате листвью заполняется одной строкой с первой новостью, почему остальное не парсится?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2015, 13:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Парсинг на jsoup (Программирование Android):

JSOUP парсинг - Программирование Android
Код парсит в textView1 с сайта class=&quot;30&quot; Как переписать/дописать код, чтоб он парсил еще и в textView2 класс=&quot;31&quot; Классы 30, 31 на...

Jsoup парсинг сайта - Программирование Android
Помогите пожалуйста. Пытаюсь получить названия книг с сайта livelib. Но он ничего не парсит. Все сайты парсит нормально а на этом не...

jsoup, парсинг html - Программирование Android
А почему не работает такой простой код? Парсинг из инета пока не трогаем... Код: package com.example.projecta; import...

Ошибка приложения (парсинг jsoup) - Программирование Android
Вот есть такой код (делал по этому примеру ) package com.example.parse; import java.io.IOException; import...

Jsoup парсинг адерса ссылки - Программирование Android
Как с помощью библиотеки jsoup парсить адрес ссылки &lt;a class=&quot;news-one clearfix brdr-btm&quot; href=&quot;/news/3719/&quot;&gt; &lt;h2&gt;Заголовок&lt;/h2&gt; ...

Парсинг XML с помощью Jsoup - Программирование Android
Всем добрый день. Пишу андроид приложение. Использую библиотеку jsoup. Возникла проблема с парсингом xml. Есть такой кусок на...

1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
27.07.2015, 08:14 #2
А если так?
Java
1
2
titles.get(1).text();
titles.get(2).text();
Поясните, что тут происходит?
"#main_wrapper > div.container.boxed.blog.normal-page.container-wrap > div > div.col-lg-8 > div:nth-child(1) > div.blog-twrapper > div.blog-content"
Можно еще так:
Java
1
2
3
4
5
6
Elements div = doc.select("div.blog-post");
if (div.size() > 0) {
    for (int i = 0; i < div.size(); i++) {
        Log.d("", div.get(i).select("blog-content").text());
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2015, 08:14
Привет! Вот еще темы с ответами:

Парсинг с Jsoup и заполнение в таблицу - Программирование Android
Доброго времени суток. Мозг выгорает, не могу разобраться как правильно парсить данный класс страницы и правильно загнать это всё в...

Jsoup: парсинг странички и заполнение контентом Activity - Программирование Android
Здравствуйте. В общем столкнулся с такой проблемой. Нужно отпарсить страничку через JSOUP. на страничке может быть простой текст, картинки,...

Непонятная ошибка в Android Studio, парсинг, jsoup - Программирование Android
Прошу помощи, ошибка, возможно будет банальной, т.к. это мое первое приложение в Android Studio. В общем у меня стоит задача реализовать...

Парсинг на JSOUP APACHE, не работает read и getInputStream - Программирование Android
Начинаю писать парс под андроид для динамического сайта. Использую JSOUP и APACHE, проблема состоит в том, что в Android Studio выделяются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru