Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
rockstarone
13 / 13 / 9
Регистрация: 23.10.2014
Сообщений: 184
#1

Jsoup парсинг сайта - Программирование Android

26.06.2016, 10:47. Просмотров 1509. Ответов 8
Метки нет (Все метки)

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

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
public class NewsFragment extends Fragment {
    public Elements  title;
    public ArrayList<String> titleList = new ArrayList<String>();
    private ArrayAdapter<String> adapter;
    private ListView lv;
    private TextView tv;
    View view;
    public NewsFragment() {
        // Required empty public constructor
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_news, container, false);
        lv=(ListView)view.findViewById(R.id.listViewNews);
 
        adapter= new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,titleList);
        lv.setAdapter(adapter);
        new MyTask().execute();
        return view;
    }
    public class MyTask extends AsyncTask<Void, Void, Void> {
        @Override
        protected Void doInBackground(Void... voids) {
 
            try {
                Document document = Jsoup.connect("https://www.livelib.ru/selection/20233").get();
                Elements description = document.select(".tag-book-title");
 
                for(Element titleFromSite:description){
                    if(titleFromSite.text().equals(""))
                        continue;
                    titleList.add(titleFromSite.text());
                }
            }catch (IOException ex){
                ex.printStackTrace();
            }
            return null;
        }
        @Override
        protected void onPostExecute(Void aVoid) {
 
            adapter.notifyDataSetChanged();
        }
    }
Jsoup парсинг сайта
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2016, 10:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Jsoup парсинг сайта (Программирование Android):

Jsoup Парсинг сайта в таблицу (GridView)!
Здравствуйте! Подскажите новичку почему этот код на ListView работает, а на...

Парсинг JSOUP
Всем доброго времени суток, собственно такой вопрос. Хочу спарсить сайт с...

Парсинг на jsoup
Добрый всем день! Заминка такая, уже весь гугл перелопатил, синих ссылок в...

JSOUP парсинг
Код парсит в textView1 с сайта class=&quot;30&quot; Как переписать/дописать код, чтоб он...

Парсинг Jsoup
Парсю сайт с помощью Jsoup Есть страница с новостями с URL в виде: Новости за...

jsoup, парсинг html
А почему не работает такой простой код? Парсинг из инета пока не трогаем......

8
Pablito
2653 / 2135 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
26.06.2016, 12:42 #2
по адресу который в коде, открывается
Jsoup парсинг сайта
что там должно парсить?
1
rockstarone
13 / 13 / 9
Регистрация: 23.10.2014
Сообщений: 184
26.06.2016, 12:58  [ТС] #3
Там же если ниже пролистать идет список книг
0
Pablito
2653 / 2135 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
26.06.2016, 14:30 #4
Лучший ответ Сообщение было отмечено rockstarone как решение

Решение

Java
1
2
3
4
5
6
7
8
        Document doc = Jsoup.connect("https://www.livelib.ru/selection/20233").execute().parse();
        Elements elements = doc.getElementsByClass("selebook-row"); // книги, 3 штуки в массиве
        for (Element e: elements) {
            String title = e.getElementsByClass("book-title").text();
            String author = e.getElementsByClass("author-name").text();
            String posterUrl = e.getElementsByClass("book-picture").select("img").attr("src");
            String description = e.getElementsByClass("book-description").text();
        }
попробовал, у меня выводит три книги
1
rockstarone
13 / 13 / 9
Регистрация: 23.10.2014
Сообщений: 184
26.06.2016, 21:51  [ТС] #5
Паблито, Да, действительно так работает. Но 3 книги. Это из-за того что он считает что мы с мобильной версии сайта. А как сказать ему что мы с пк?

Добавлено через 1 час 1 минуту
Паблито, пробую через useragent . получается что листвью вроде заполнен. могу пролистать вниз, вверх но значений нет

Добавлено через 5 часов 33 минуты
Паблито, все . разобрался. спасибо большое. а как мне теперь картинку в imageview засунуть, подскажи пожалуйста?
0
Pablito
2653 / 2135 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
27.06.2016, 11:00 #6
Цитата Сообщение от rockstarone Посмотреть сообщение
а как мне теперь картинку в imageview засунуть,
http://www.cyberforum.ru/android-dev/thread1675562.html
1
rockstarone
13 / 13 / 9
Регистрация: 23.10.2014
Сообщений: 184
27.06.2016, 11:04  [ТС] #7
Паблито, а как сам адрес получить? подскажите пожалуйста.
Java
1
    String posterUrl = e.getElementsByClass("book-picture").select("img").attr("src");
Там же нет такого класса book-picture.
0
Pablito
2653 / 2135 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
27.06.2016, 11:54 #8
да, я забыл про useragent
Java
1
2
3
4
                        String title = e.getElementsByClass("tag-book-title").text();
                        String author = e.getElementsByClass("tag-book-author").text();
                        String posterUrl = e.getElementsByClass("block").select("img").attr("src");
                        String description = e.getElementsByClass("selebook").text();
вот так вроде работает, 25 книг находит
1
rockstarone
13 / 13 / 9
Регистрация: 23.10.2014
Сообщений: 184
27.06.2016, 14:36  [ТС] #9
Паблито, спасибо большое!
0
27.06.2016, 14:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2016, 14:36
Привет! Вот еще темы с решениями:

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

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

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

Jsoup парсинг адерса ссылки
Как с помощью библиотеки jsoup парсить адрес ссылки &lt;a class=&quot;news-one clearfix...


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

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

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