Помогите с использованием Jsoup в Android - PullRequest
1 голос
/ 13 июля 2011

Я пытаюсь подключиться к веб-сайту и получить определенную информацию. Я использовал HTMLCleaner и xpath, но, похоже, он не поддерживает все запросы xpath, которые мне нужны.

Я пытаюсь использовать Jsoup сейчас, после прочтения хороших отзывов. Но проблема в том, что когда я запускаю программу, она принудительно закрывается. Ниже приводится моя пробная программа. Пожалуйста, дайте мне знать, где я иду не так. (В файле манифеста установлено интернет-разрешение).

Спасибо.

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;

public class jTrial extends Activity {
     /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        String myString = null;     
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search);
        try{
            Document doc = Jsoup.connect("http://google.com/").get();

            Elements divs = doc.select("div");

            for (Element div : divs) {
                myString=div.text();
            }
        }
        catch(IOException e){
            myString=e.getMessage();
        }
        TextView tv=new TextView(this);
        tv.setText(myString);
        //this.setContentView(tv);
    }
}

Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 июля 2011

Вы, вероятно, получаете исключение, когда пытаетесь (поскольку вы не разместили LogCat)

    for (Element div : divs) 
    {
       myString=myString+" " +div.text();  //if it was like you did, than you'll see only the last element or use div.getElementsByTag("div"); 
    }
    TextView tv=new TextView(this);
            tv.setText(myString);

Если вы хотите проанализировать <divs из html, вероятно, вы должны использовать div.getElementsByTag("div"), потому что вы ищете тег HTML, а затем анализируете. Либо вы ошиблись TextView, либо myString имеет значение null (может быть NullPointerException).

Попробуйте переписать эту часть, как (надеюсь, у вас есть TextView в вашем search.xml)

TextView tv=(TextView)findViewById(R.id.yourTextView);
if(myString!=null)  // if it is null you'll know that something with the Jsoup isnt right
{
       tv.setText(myString);
}else { 
tv.seText("myString is null");
}
0 голосов
/ 19 июля 2011

Вы должны загрузить файл Jsoup jar с http://jsoup.org/download

Создайте новый каталог "libs" в каталоге проекта и скопируйте этот файл jar в каталог libs. Создание «libs» в папке res приводит к ошибке, поскольку папке res разрешено быть только теми, которые определены в Android. Затем щелкните правой кнопкой мыши по проекту и откройте путь сборки -> настроить путь сборки. Выберите вкладку «Библиотеки» и добавьте банки. Перейдите в каталог libs вашего проекта и добавьте JAR-файл Jsoup. Снова импортируйте все пакеты.

...