Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/17: Рейтинг темы: голосов - 17, средняя оценка - 4.94
ALSHA
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 15
#1

Парсинг сайта новостей

27.09.2013, 12:12. Просмотров 3469. Ответов 8
Метки нет (Все метки)

Здравствуйте, уважаемые!

В приложении Android пытаюсь вывести новости с сайта новостей в ListView
Новости выводятся, но без активных ссылок.
Подскажите как доработать прилагаемый код, чтобы по нажатии на новость она (новость) загружалась в браузере в виде страницы HTML

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
package ru.sample.study;
 
import android.app.Activity;
import android.os.Bundle;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.util.ArrayList;
import android.widget.ListView;
import android.widget.ArrayAdapter;
 
public class MainScreen extends Activity
{
    ArrayList<String> mData =  new ArrayList<String>();
    ListView mListView;
    ArrayAdapter<String> mAdapter;
 
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        mListView = (ListView) findViewById(R.id.listView);
 
        processData();
 
        mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, mData);
        mListView.setAdapter(mAdapter);
    }
 
    private void processData() {
        String URL = "http://www.top68.ru/policy/";
        
        
        
        try {
            Document doc = Jsoup.connect(URL).get();
            Elements questions = doc.select("h3 > a[href]");
            
            
            
            for(Element question: questions) {
                mData.add(question.text());
            }
            
            if(mData.size() == 0) {
                mData.add("Empty result");
            }
 
        } catch (Exception ex) {
            ex.printStackTrace();
            mData.clear();
            mData.add("Exception: " + ex.toString());
        }
    }
}
Заранее благодарен
ALSHA

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2013, 12:12
Ответы с готовыми решениями:

Парсинг сайта
Доброго времени суток! Сегодня получил тему диплому... Немного при#%ел....

Парсинг сайта
Здравствуйте уважаемые форумчане. Хочу спарсить расписание занятий...

Парсинг сайта
Привет всем, тут вылезла какая то не понятная фигня... Буквально вчера все...

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

Парсинг изображения с сайта
Здравствуйте. По практике в универе, нужно написать клиент под сайт. Я выбрал...

8
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
27.09.2013, 12:59 #2
Создать новое активити c WebView и туда загружать URL новости или кусок HTML кода. Или к обработчику нажитий привязать интент

Java
1
2
3
4
String url = "http://www.google.com";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
1
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
27.09.2013, 13:02 #3
Тут как минимум нужен класс который описывает новость.
Java
1
2
3
4
class News {
private name; // название новости
private url; // ссылка
}
Дальше, нужно распарсить новости, и создать список объектов класса News. Потом создать кастомный адаптер для списка, и по клику на элемент списка брать позицию, дальше выбрать по этой позиции объект, взять у него поле url и запустить браузер, как вам подсказали выше.
2
ALSHA
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 15
27.09.2013, 13:23  [ТС] #4
Спасибо большое, что ответили....
Немного дополню вопрос.
А как вывести новости в ListView чтобы они УЖЕ были ссылками (подчеркнутый текст).

Заранее благодарен
ALSHA
0
Salty_Sugar
26 / 26 / 4
Регистрация: 02.04.2012
Сообщений: 142
27.09.2013, 13:31 #5
Сделайте вебвью. Парсите сайт. Перегоняете в хтмл-текст. Мб вебвью не увидит ссылку. Тогда вставляете "http://www.top68.ru/policy" в
HTML5
1
<a href="/someNews"
, чтобы было
HTML5
1
<a href="http://www.top68.ru/policy/someNews"
Птом делаете
Java
1
webView.loadDatawithBaseUrl(null, yourHtmlDocument, "html/text", "utf-8", null);
1
ALSHA
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 15
27.09.2013, 13:49  [ТС] #6
Цитата Сообщение от Salty_Sugar Посмотреть сообщение
Сделайте вебвью. Парсите сайт. Перегоняете в хтмл-текст. Мб вебвью не увидит ссылку. Тогда вставляете "http://www.top68.ru/policy" в
HTML5
1
<a href="/someNews"
, чтобы было
HTML5
1
<a href="http://www.top68.ru/policy/someNews"
Птом делаете
Java
1
webView.loadDatawithBaseUrl(null, yourHtmlDocument, "html/text", "utf-8", null);
Да..... я думал можно сделать попроще

И текст HTML всего-то
<h3 class="title"><a href="http://www.top68.ru/policy/vrucheny-udostovereniya-25625">Вручены удостоверения</a>
Из него надо взять - Вручены удостоверения -
в виде ссылки на - http://www.top68.ru/policy/vrucheny-udostovereniya-25625 -
0
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
27.09.2013, 13:56 #7
ALSHA, зачем вам в листе УЖЕ ссылка? Отображайте в итеме листа название новости , дату добавление и прочее. C помощью Jsoup выдирайте кусок нужного HTML кода. И загружайте его в WebView как показал Salty_Sugar, вот и все. Если новость проcтая можно загрузить в TextView
1
ALSHA
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 15
27.09.2013, 14:18  [ТС] #8
Цитата Сообщение от KillAndEat Посмотреть сообщение
ALSHA, зачем вам в листе УЖЕ ссылка? Отображайте в итеме листа название новости , дату добавление и прочее. C помощью Jsoup выдирайте кусок нужного HTML кода. И загружайте его в WebView как показал Salty_Sugar, вот и все. Если новость проcтая можно загрузить в TextView

Спасибо за советы....

И все-таки, можно ли так сделать, чтобы новость в ListView уже показывалась в виде ссылки???

Извините за вопросы
0
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
27.09.2013, 14:45 #9
ALSHA, можно то можно, но когда вы тыкните на такую ссылку браузер автоматом не откроется. Запустится обработчик нажатий листа, а в нем уже соответственно нужно описать что делать этом случае. Если туда воткнуть код который я привел выше то будет запускаться браузер.

Добавлено через 7 минут
Если хотите чтоб были именно ссылки. То можно заменить лист на скролящийся TextView, вырвать все нужные ссылки с помощью Jsoup, и все это запихнуть в TextView при помощи класса Html и его метода fromHtml. Как то так)
1
27.09.2013, 14:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2013, 14:45

Парсинг информации с сайта
Доброго времени суток, ув. форумчане, подскажите как лучше всего парсить...

Парсинг сайта и кодировка
Добрый день. Начала изучать вопрос парсинга страниц, наткнулась на тему на...

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


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

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

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