Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для Aliara
18 / 18 / 13
Регистрация: 18.06.2015
Сообщений: 79

Парсинг сайта и кодировка

07.04.2016, 12:40. Показов 1036. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Начала изучать вопрос парсинга страниц, наткнулась на тему на хабрена тему на хабре
Сделала, вроде, все правильно, но никак не могу разобраться с кодировкой страниц. Вместо русских букв получаю ромбики с вопросами. Пробовала указать кодировку UTF-8 и Windows-1251 -не помогло.
Прикладываю код классов и скрин экрана. Ради примера взята ветка этого форума.
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
74
75
76
77
78
79
80
81
82
83
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
 
 
import org.htmlcleaner.TagNode;
 
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
public class stackParser extends Activity {
 
   /* @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_stack_parser);
    }*/
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       //setContentView(R.layout.main);
       setContentView(R.layout.activity_stack_parser);
 
       
       Button button = (Button)findViewById(R.id.parse);
     
       button.setOnClickListener(myListener);
   }
 
 
    private ProgressDialog pd;
   
    private View.OnClickListener myListener = new View.OnClickListener() {
        public void onClick(View v) {
           
            pd = ProgressDialog.show(stackParser.this, "Working...", "Connect", true, false);
            
            new ParseSite().execute("https://www.cyberforum.ru/android-dev");
        }
    };
 
    private class ParseSite extends AsyncTask<String, Void, List<String>> {
        
        protected List<String> doInBackground(String... arg) {
            List<String> output = new ArrayList<String>();
            try
            {
                HtmlHelper hh = new HtmlHelper(new URL(arg[0]));
                List<TagNode> links = hh.getLinksByClass("thread_title_1703928");
 
                for (Iterator<TagNode> iterator = links.iterator(); iterator.hasNext();)
                {
                    TagNode divElement = (TagNode) iterator.next();
                    output.add(divElement.getText().toString());
                }
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
            return output;
        }
 
      
        protected void onPostExecute(List<String> output) {
           
            pd.dismiss();
           
            ListView listview = (ListView) findViewById(R.id.listViewData);
            
            listview.setAdapter(new ArrayAdapter<String>(stackParser.this,
                    android.R.layout.simple_list_item_1 , output));
        }
    }
}
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
public class HtmlHelper {
    TagNode rootNode;
 
    //Конструктор
    public HtmlHelper(URL htmlPage) throws IOException
    {
        //Создаём объект HtmlCleaner
        HtmlCleaner cleaner = new HtmlCleaner();
        //Загружаем html код сайта
        rootNode = cleaner.clean(htmlPage);
    }
 
    List<TagNode> getLinksByClass(String CSSClassname)
    {
        List<TagNode> linkList = new ArrayList<TagNode>();
 
        //Выбираем все ссылки
        TagNode linkElements[] = rootNode.getElementsByName("a", true);
        for (int i = 0; linkElements != null && i < linkElements.length; i++)
        {
            //получаем атрибут по имени
            String classType = linkElements[i].getAttributeByName("id");
            //если атрибут есть и он эквивалентен искомому, то добавляем в список
            if (classType != null && classType.equals(CSSClassname))
            {
                linkList.add(linkElements[i]);
            }
        }
 
        return linkList;
    }
}
Миниатюры
Парсинг сайта и кодировка  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.04.2016, 12:40
Ответы с готовыми решениями:

Парсинг XML и кодировка
Доброго времени суток. Ребята подскажите. Делаю парсинг XML, все хорошо работает но вот когда запускаю на андроид не хочет правильно...

Парсинг данных с сайта или страницы сайта
Здравствуйте, добрые люди! Есть задача спарсить данные с страницы соц сети. Или просто со страницы с помощью js. На пхп не предлагать....

Кодировка сайта
Здравствуйте. У меня сайт на windows-1251. Недавно мой знакомый кодер сказал что это тупо и глупо, что надо переходить на UTF. С тех...

1
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
07.04.2016, 13:51
статье сто лет в обед
используй библиотеку JSOUP
в build.gradle подключается строкой
XML
1
compile 'org.jsoup:jsoup:1.8.3'
примеров на форуме и в сети полно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.04.2016, 13:51
Помогаю со студенческими работами здесь

Кодировка сайта
Вопрос, какая кодировка сайта больше всего &quot;нравиться&quot; поисковикам, и какая лучше всего читается большинством браузеров, нет нет да и...

Кодировка сайта
Помогите пожалуйста, Как сделать так, что кодировка сайта во всех браузерах отображался нормально, а не балаберда(вопросики иероглифы какие...

Кодировка сайта
Проблема в том что ,титлы сайта в символах ,а сам сайт норм ,меняю на другую кодировку ,титлы стоют на нормальном языке,сайт в символах . ...

Кодировка сайта
Здраствуйте всем. Редактировав html страницу столкнулся с проблемой. Назвав разделы сайта Главная, Новости и т.д. на сайт не хочет...

Кодировка сайта
Ребята помогите уже не знаю что делать кодировка (.никод(UTF-8) стоит но иероглифы одни что еще можете посоветовать..


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru