【问题标题】:How to parse simple html code with jsoup? android如何用jsoup解析简单的html代码?安卓
【发布时间】:2014-08-12 01:26:42
【问题描述】:

这是我的html代码的一部分

                    <div class="entry themeform">
                        <h3>dr James &#8211; opiekun naukowy</h3>
    <p><a href="http://www.page.com/picture.jpg"><img class="alignnone size-medium wp-image-31" alt="grynia" src="http://www.page.com/picture.jpg" width="200" height="300" /></a></p>
    <h3>Kevin &#8211; prezes</h3>
    <p><a href="http://www.page.com/picture.jpg"><img class="alignnone size-medium wp-image-35" alt="prezes" src="http://www.page.com/picture.jpg" width="217" height="300" /></a></p>
    <h3>Lucy &#8211; wice prezes</h3>
    <p><a href="http://www.page.com/picture.jpg"><img class="alignnone size-medium wp-image-36" alt="Lucy" src="http://www.page.com/picture.jpg" width="225" height="300" /></a></p>
    <h3>Zarząd</h3>
    <p><a href="http://www.page.com/picture.jpg"><img class="alignnone  wp-image-37" alt="zarzad_KNSE" src="http://www.page.com/picture.jpg" width="489" height="256" /></a></p>
                        <div class="clear"></div

>
                </div><!--/.entry-->

首先,我想从这个 div 中的标签中解析文本。如果你能帮我解析这个 div 中的图像也很好(我更改了图片 url,因为隐私)。我是 jsoup 的新手,所以如果你给我写一个代码,我将不胜感激,只是为了将文本解析到 android 活动。

编辑 好的,一开始我试图解析你的(SMR)教程中显示的标题。

代码如下:

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import com.example.uwbnewapptest.R;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class KnseActivity extends Activity {

    //TextView title;
    String url="http://www.google.com";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.knse_main);
        //title = (TextView) findViewById(R.id.textView1);

    }


    public void bt(View v){
        new Title().execute();
    }

     private class Title extends AsyncTask<Void, Void, Void> {
            String title;



            @Override
            protected Void doInBackground(Void... params) {
                try {
                    // Connect to the web site
                    Document document = Jsoup.connect(url).get();
                    // Get the html document title
                    title = document.title();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return null;
            }

            @Override
            protected void onPostExecute(Void result) {
                // Set title into TextView
                TextView txttitle = (TextView) findViewById(R.id.textView1);
                txttitle.setText(title);
            }

        }

}

但是当我运行应用程序并点击按钮时,我有一个错误

编辑 2:

06-21 16:18:01.808: E/AndroidRuntime(28063): FATAL EXCEPTION: AsyncTask #2
06-21 16:18:01.808: E/AndroidRuntime(28063): Process: com.example.uwbnewapptest, PID: 28063
06-21 16:18:01.808: E/AndroidRuntime(28063): java.lang.RuntimeException: An error occured while executing doInBackground()
06-21 16:18:01.808: E/AndroidRuntime(28063):    at android.os.AsyncTask$3.done(AsyncTask.java:300)
06-21 16:18:01.808: E/AndroidRuntime(28063):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
06-21 16:18:01.808: E/AndroidRuntime(28063):    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
06-21 16:18:01.808: E/AndroidRuntime(28063):    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
06-21 16:18:01.808: E/AndroidRuntime(28063):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
06-21 16:18:01.808: E/AndroidRuntime(28063):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
06-21 16:18:01.808: E/AndroidRuntime(28063):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
06-21 16:18:01.808: E/AndroidRuntime(28063):    at java.lang.Thread.run(Thread.java:841)
06-21 16:18:01.808: E/AndroidRuntime(28063): Caused by: java.lang.NoClassDefFoundError: org.jsoup.Jsoup
06-21 16:18:01.808: E/AndroidRuntime(28063):    at com.uwbapp.KnseActivity$Title.doInBackground(KnseActivity.java:43)
06-21 16:18:01.808: E/AndroidRuntime(28063):    at com.uwbapp.KnseActivity$Title.doInBackground(KnseActivity.java:1)
06-21 16:18:01.808: E/AndroidRuntime(28063):    at android.os.AsyncTask$2.call(AsyncTask.java:288)
06-21 16:18:01.808: E/AndroidRuntime(28063):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
06-21 16:18:01.808: E/AndroidRuntime(28063):    ... 4 more

【问题讨论】:

  • 这可能会帮助你Android Basic JSOUP Tutorial
  • 检查我的编辑 SMR。我试过这个,但它不起作用。
  • 你能打印你收到的错误的堆栈跟踪吗?
  • 这是你需要的吗?
  • Android 找不到库,你是如何在项目中包含 jsoup 的?

标签: android html html-parsing jsoup


【解决方案1】:

有多种方法可以使用 jsoup 提取数据。检查http://jsoup.org/cookbook/extracting-data/selector-syntax

在你的情况下,你可以得到你可以做的文本和图像源

Document doc = Jsoup.connect(url).get();
for(Element div : doc.select("div")){
    System.out.println(div.text());
    for(Element img : div.select("img")){
        System.out.println(img.attr("src"));
    }
}

【讨论】:

    【解决方案2】:

    这是我的html代码的一部分

    <pre style="word-wrap: break-word; white-space: pre-wrap;">90</pre>
    

    我是 jsoup 的新手,所以如果你给我写一个代码,我将不胜感激,只是为了将文本解析到 android 活动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 2018-11-19
      • 1970-01-01
      • 2011-12-11
      相关资源
      最近更新 更多