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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.74
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
#1

jsoup, парсинг html - Android

01.05.2013, 00:52. Просмотров 3375. Ответов 14
Метки нет (Все метки)

А почему не работает такой простой код? Парсинг из инета пока не трогаем...
Код:
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
package com.example.projecta;
 
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
 
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
 
public class MainActivity extends Activity {
 
  MyTask mt;
  TextView tvInfo;
 
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    tvInfo = (TextView) findViewById(R.id.tvInfo);
  }
 
  public void onclick(View v) {
    mt = new MyTask();
    mt.execute();
  }
 
  class MyTask extends AsyncTask<String, Void, String> {
 
    @Override
    protected void onPreExecute() {
      super.onPreExecute();
      tvInfo.setText("Begin");
    }
 
    protected String doInBackground(String... links) {
        Document doc = null;
        
        String html = "<html><head><title>Коты учатся кодить</title>"
                + "<body><p>Коты умеют <del>ш</del>кодить.<br> Они великие программисты." +
                        "<p>А еще они умеют мяукать.</p>" +
                        "<a href='http://developer.alexanderklimov.ru'>Подробности здесь</a>" +
                        "</body></html>";
        doc = Jsoup.parse(html);
      return doc.html();
    }
    @Override
    protected void onPostExecute(String result) {
      super.onPostExecute(result);
      tvInfo.setText(result);
   }    
  }
}
Приложение просто вылетает с ошибкой...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
01.05.2013, 01:04     jsoup, парсинг html #2
опишите проблему подробнее.
Юрий Владимиров
51 / 51 / 2
Регистрация: 06.04.2013
Сообщений: 178
01.05.2013, 01:19     jsoup, парсинг html #3
какая ошибка?
попробуй теги позакрывать недостающие (ошибка в html документе)
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
01.05.2013, 01:25  [ТС]     jsoup, парсинг html #4
Изучаю отдельные потоки AsyncTask и библиотеку Jsoup. Для начала попробовал не парсить интернет-страницы, а попробовать просто вывести на экран файл html, написанный выше.
Итог-ошибка приложения. вот лог:
Кликните здесь для просмотра всего текста
04-30 21:27:34.320: D/gralloc_goldfish(1690): Emulator without GPU emulation detected.
04-30 21:27:34.650: I/Choreographer(1690): Skipped 36 frames! The application may be doing too much work on its main thread.
04-30 21:27:34.883: I/Choreographer(1690): Skipped 52 frames! The application may be doing too much work on its main thread.
04-30 21:27:35.670: I/Choreographer(1690): Skipped 33 frames! The application may be doing too much work on its main thread.
04-30 21:27:35.843: D/AndroidRuntime(1690): Shutting down VM
04-30 21:27:35.851: W/dalvikvm(1690): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
04-30 21:27:35.920: E/AndroidRuntime(1690): FATAL EXCEPTION: main
04-30 21:27:35.920: E/AndroidRuntime(1690): java.lang.IllegalStateException: Could not execute method of the activity
04-30 21:27:35.920: E/AndroidRuntime(1690): at android.view.View$1.onClick(View.java:3599)
04-30 21:27:35.920: E/AndroidRuntime(1690): at android.view.View.performClick(View.java:4204)
04-30 21:27:35.920: E/AndroidRuntime(1690): at android.view.View$PerformClick.run(View.java:17355)
04-30 21:27:35.920: E/AndroidRuntime(1690): at android.os.Handler.handleCallback(Handler.java:725)
04-30 21:27:35.920: E/AndroidRuntime(1690): at android.os.Handler.dispatchMessage(Handler.java:92)
04-30 21:27:35.920: E/AndroidRuntime(1690): at android.os.Looper.loop(Looper.java:137)
04-30 21:27:35.920: E/AndroidRuntime(1690): at android.app.ActivityThread.main(ActivityThread.java:5041)
04-30 21:27:35.920: E/AndroidRuntime(1690): at java.lang.reflect.Method.invokeNative(Native Method)
04-30 21:27:35.920: E/AndroidRuntime(1690): at java.lang.reflect.Method.invoke(Method.java:511)
04-30 21:27:35.920: E/AndroidRuntime(1690): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-30 21:27:35.920: E/AndroidRuntime(1690): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-30 21:27:35.920: E/AndroidRuntime(1690): at dalvik.system.NativeStart.main(Native Method)
04-30 21:27:35.920: E/AndroidRuntime(1690): Caused by: java.lang.reflect.InvocationTargetException
04-30 21:27:35.920: E/AndroidRuntime(1690): at java.lang.reflect.Method.invokeNative(Native Method)
04-30 21:27:35.920: E/AndroidRuntime(1690): at java.lang.reflect.Method.invoke(Method.java:511)
04-30 21:27:35.920: E/AndroidRuntime(1690): at android.view.View$1.onClick(View.java:3594)
04-30 21:27:35.920: E/AndroidRuntime(1690): ... 11 more
04-30 21:27:35.920: E/AndroidRuntime(1690): Caused by: java.lang.NullPointerException
04-30 21:27:35.920: E/AndroidRuntime(1690): at com.example.projecta.MainActivity.onclick(MainActivity.java:25)
04-30 21:27:35.920: E/AndroidRuntime(1690): ... 14 more
04-30 21:27:38.540: I/Process(1690): Sending signal. PID: 1690 SIG: 9


Тег head закрыл. хотя пишут, что она и так должна вывести. делаю по этому уроку

Добавлено через 3 минуты
Цитата Сообщение от Xpert1993 Посмотреть сообщение
AsyncTask<String, Void, String>
Самому кажется что ошибка где то в этих параметрах... но я уже все перепробовал.
_____________________
Лог дополнил.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
01.05.2013, 01:26     jsoup, парсинг html #5
это точно весь лог?
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
01.05.2013, 01:46  [ТС]     jsoup, парсинг html #6
Теперь весь
Юрий Владимиров
51 / 51 / 2
Регистрация: 06.04.2013
Сообщений: 178
01.05.2013, 01:51     jsoup, парсинг html #7
может попробуй так:
Java
1
 Document doc = Jsoup.parse(html);
и это настораживает, возможно где-то неточно указано название метода (или параметры)
java.lang.IllegalStateException: Could not execute method of the activity
здесь похожая проблема
Ошибка приложения (парсинг jsoup)
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
01.05.2013, 01:55  [ТС]     jsoup, парсинг html #8
ошибка осталась. насчет методов
Вот здесь:
protected String doInBackground(String... links)
правильно объявлено? Многоточие-это работа с массивом? Если просто (String html) то ругается на MyTask
The type MainActivity.MyTask must implement the inherited abstract method AsyncTask<String,Void,String>.doInBackground(String...)

Я сначала написал в ту же тему, но меня перенесли сюда, в новую.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
01.05.2013, 02:07     jsoup, парсинг html #9
Цитата Сообщение от Xpert1993 Посмотреть сообщение
Теперь весь
не сходится. выложите проект.
Юрий Владимиров
51 / 51 / 2
Регистрация: 06.04.2013
Сообщений: 178
01.05.2013, 02:14     jsoup, парсинг html #10
че-то может с списком параметров

"тип MainActivity.MyTask() должен реализовывать наследуемый абстрактный метод syncTask<String,Void,String>.doInBackground(String...)"

и почему у тебя конструктор без параметров?
mt = new MyTask();
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
01.05.2013, 02:28  [ТС]     jsoup, парсинг html #11
Вот
Вложения
Тип файла: rar ProjectA.rar (825.2 Кб, 37 просмотров)
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
01.05.2013, 02:41     jsoup, парсинг html #12
ну и зачем же вы закоментировали mt = new MyTask();?
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
01.05.2013, 03:23  [ТС]     jsoup, парсинг html #13
Пробовал разные варианты, вот и остался хвост. Сейчас попробую убрать комментарии и запустить.

Добавлено через 39 минут
Ну раскомментировав я получил исходный код (тот который задавал в начале.).
И по прежнему сыпятся ошибки:
Кликните здесь для просмотра всего текста
04-30 23:20:45.635: E/Trace(801): error opening trace file: No such file or directory (2)
04-30 23:20:46.746: D/gralloc_goldfish(801): Emulator without GPU emulation detected.
04-30 23:20:47.296: I/Choreographer(801): Skipped 49 frames! The application may be doing too much work on its main thread.
04-30 23:20:47.416: I/Choreographer(801): Skipped 31 frames! The application may be doing too much work on its main thread.
04-30 23:20:49.686: I/Choreographer(801): Skipped 30 frames! The application may be doing too much work on its main thread.
04-30 23:20:50.415: I/Choreographer(801): Skipped 31 frames! The application may be doing too much work on its main thread.
04-30 23:20:50.985: I/Choreographer(801): Skipped 31 frames! The application may be doing too much work on its main thread.
04-30 23:20:57.955: I/Choreographer(801): Skipped 33 frames! The application may be doing too much work on its main thread.
04-30 23:21:00.145: I/Choreographer(801): Skipped 42 frames! The application may be doing too much work on its main thread.
04-30 23:21:00.895: I/Choreographer(801): Skipped 32 frames! The application may be doing too much work on its main thread.
04-30 23:21:02.156: I/Choreographer(801): Skipped 32 frames! The application may be doing too much work on its main thread.
04-30 23:21:03.396: I/Choreographer(801): Skipped 30 frames! The application may be doing too much work on its main thread.
04-30 23:21:05.016: I/Choreographer(801): Skipped 31 frames! The application may be doing too much work on its main thread.
04-30 23:21:07.115: I/Choreographer(801): Skipped 32 frames! The application may be doing too much work on its main thread.
04-30 23:21:11.626: I/Choreographer(801): Skipped 31 frames! The application may be doing too much work on its main thread.
04-30 23:21:12.786: I/Choreographer(801): Skipped 32 frames! The application may be doing too much work on its main thread.
04-30 23:21:19.116: I/Choreographer(801): Skipped 31 frames! The application may be doing too much work on its main thread.
04-30 23:21:19.856: I/Choreographer(801): Skipped 32 frames! The application may be doing too much work on its main thread.
04-30 23:21:20.569: I/Choreographer(801): Skipped 50 frames! The application may be doing too much work on its main thread.
04-30 23:21:20.886: I/Choreographer(801): Skipped 31 frames! The application may be doing too much work on its main thread.
04-30 23:21:21.715: I/Choreographer(801): Skipped 31 frames! The application may be doing too much work on its main thread.
04-30 23:21:24.125: I/Choreographer(801): Skipped 30 frames! The application may be doing too much work on its main thread.
04-30 23:21:29.755: I/Choreographer(801): Skipped 32 frames! The application may be doing too much work on its main thread.
04-30 23:21:30.465: I/Choreographer(801): Skipped 68 frames! The application may be doing too much work on its main thread.
04-30 23:21:30.738: I/dalvikvm(801): Could not find method org.jsoup.Jsoup.parse, referenced from method com.example.projecta.MainActivity$MyTask.doInBackground
04-30 23:21:30.738: W/dalvikvm(801): VFY: unable to resolve static method 3567: Lorg/jsoup/Jsoup;.parse (Ljava/lang/StringLorg/jsoup/nodes/Document;
04-30 23:21:30.756: D/dalvikvm(801): VFY: replacing opcode 0x71 at 0x0002
04-30 23:21:30.765: W/dalvikvm(801): threadid=11: thread exiting with uncaught exception (group=0x40a71930)
04-30 23:21:30.775: E/AndroidRuntime(801): FATAL EXCEPTION: AsyncTask #1
04-30 23:21:30.775: E/AndroidRuntime(801): java.lang.RuntimeException: An error occured while executing doInBackground()
04-30 23:21:30.775: E/AndroidRuntime(801): at android.os.AsyncTask$3.done(AsyncTask.java:299)
04-30 23:21:30.775: E/AndroidRuntime(801): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
04-30 23:21:30.775: E/AndroidRuntime(801): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
04-30 23:21:30.775: E/AndroidRuntime(801): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
04-30 23:21:30.775: E/AndroidRuntime(801): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
04-30 23:21:30.775: E/AndroidRuntime(801): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
04-30 23:21:30.775: E/AndroidRuntime(801): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
04-30 23:21:30.775: E/AndroidRuntime(801): at java.lang.Thread.run(Thread.java:856)
04-30 23:21:30.775: E/AndroidRuntime(801): Caused by: java.lang.NoClassDefFoundError: org.jsoup.Jsoup
04-30 23:21:30.775: E/AndroidRuntime(801): at com.example.projecta.MainActivity$MyTask.doInBackground(MainActivity.java:44)
04-30 23:21:30.775: E/AndroidRuntime(801): at com.example.projecta.MainActivity$MyTask.doInBackground(MainActivity.java:1)
04-30 23:21:30.775: E/AndroidRuntime(801): at android.os.AsyncTask$2.call(AsyncTask.java:287)
04-30 23:21:30.775: E/AndroidRuntime(801): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
04-30 23:21:30.775: E/AndroidRuntime(801): ... 4 more
04-30 23:21:30.775: I/Choreographer(801): Skipped 49 frames! The application may be doing too much work on its main thread.
04-30 23:21:32.066: I/Choreographer(801): Skipped 94 frames! The application may be doing too much work on its main thread.
04-30 23:21:32.336: I/Choreographer(801): Skipped 50 frames! The application may be doing too much work on its main thread.
04-30 23:21:32.485: I/Choreographer(801): Skipped 36 frames! The application may be doing too much work on its main thread.
04-30 23:21:32.685: I/Choreographer(801): Skipped 50 frames! The application may be doing too much work on its main thread.
04-30 23:21:32.875: I/Choreographer(801): Skipped 48 frames! The application may be doing too much work on its main thread.
04-30 23:21:33.305: I/Choreographer(801): Skipped 36 frames! The application may be doing too much work on its main thread.
04-30 23:21:33.846: I/Process(801): Sending signal. PID: 801 SIG: 9
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
01.05.2013, 03:37     jsoup, парсинг html #14
удалите jsoup.jar там где вы ее добавляли и просто скопируйте в папку libs
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2013, 11:48     jsoup, парсинг html
Еще ссылки по теме:

Jsoup: парсинг странички и заполнение контентом Activity Android
Непонятная ошибка в Android Studio, парсинг, jsoup Android
Jsoup парсинг сайта Android
Android Парсинг с Jsoup и заполнение в таблицу

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

Или воспользуйтесь поиском по форуму:
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
01.05.2013, 11:48  [ТС]     jsoup, парсинг html #15
Спасибо, все запустилось! Я думал можно использовать библиотеку не копировав ее в проект, раньше так делал и все работало. но видимо что то поменялось.
Yandex
Объявления
01.05.2013, 11:48     jsoup, парсинг html
Ответ Создать тему
Опции темы

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