在android中使用jsoup

时间:2014-10-16 08:52:21

标签: android html parsing jsoup

我正在尝试在Android中使用Jsoup 1.8.1解析此URL中的HTML - http://sirim.co.il/

由于某些原因,我无法让它工作..在其他网站上工作的方法在这里不起作用。

我的代码中有什么问题吗?或者与网站?

只是试图从网站上获取所有表格并添加到TextView他们的ID ... TextView为空。

Document doc = Jsoup.connect("http://sirim.co.il/").get();
Elements metaElems = doc.select("table");
for (Element metaElem : metaElems) {
// for every "table" tag, get the id attribute
        String id = metaElem.attr("id");
        buffer.append(id + "\r\n");
}

httpInfo.setText(s); // set text of TextView

任何想法都有帮助吗? 感谢

编辑:代码很简单。 由于某种原因,它适用于java,但在android

中不起作用

metaElems是空的,我猜它甚至没有得到元素.. 想法?

    getRecipes.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // new ParseURL().execute(new String[] { URL });
            StringBuffer buffer = new StringBuffer();
            Document doc;
            try {
                doc = Jsoup.connect("http://sirim.co.il/").get();
                Elements metaElems = doc.select("table");
                for (Element metaElem : metaElems) {
                    // for every "table" tag, get the id attribute
                    String id = metaElem.attr("id");
                    buffer.append(id);
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            httpInfo.setText(buffer.toString());
        }
    });

2 个答案:

答案 0 :(得分:1)

该代码适用于我(普通java) - 打印所有表的id(当未设置id时,打印一个空行):

package jsoup;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Tester {

    public static void main(String[] args) {
        Document doc;
        try {
            doc = Jsoup.connect("http://sirim.co.il/").get();
            Elements metaElems = doc.select("table");
            for (Element metaElem : metaElems) {
            // for every "table" tag, get the id attribute
                    String id = metaElem.attr("id");
                    System.out.println(id);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

编辑:您可能是因为您正在UI线程中发送网络请求。将请求卸载到AsyncTask doInBackground ..

请参阅:Use Jsoup in Android

答案 1 :(得分:0)

搞定了! 这是因为移动设备上的用户代理与桌面应用程序中的用户代理不同。

我刚刚在此链接中更改了它 - http://xjaphx.wordpress.com/2013/01/29/a-note-when-using-jsoup-user-agent/