使用 Jsoup 在 TextView 中显示单元格 table 数据

Display cell table data in a TextView using Jsoup

我想显示在TextView某滑雪场过去24小时的雪景。我使用了 CSS 路径并尝试了其他方法,但没有任何反应 TextView 没有显示任何内容。

网页:http://www.arizonasnowbowl.com/resort/snow_report.php

CSS 路径:#container > div.right > table.interior > tbody > tr:nth-child(2) > td.infoalt

private class Description extends AsyncTask<Void, Void, Void> {

    String desc;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        mProgressDialog = new ProgressDialog(Snowreport.this);
        mProgressDialog.setTitle("Snow Report");
        mProgressDialog.setMessage("Loading...");
        mProgressDialog.setIndeterminate(false);
        mProgressDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
        try {
            // Connect to the web site
            Document document = Jsoup.connect(url).get();
            Elements elms = document.select("td.infoalt");
            for(Element e:elms)
                if(e.className().trim().equals("infoalt"))
                //^^^<--trim is required as,
                // their can be leading and trailing space
                {

                    TextView txtdesc = (TextView) findViewById(R.id.snowp24);
                    txtdesc.setText((CharSequence) e);


                }



            mProgressDialog.dismiss();

            } catch (IOException e1) {
            e1.printStackTrace();
        }

        return null;
    }

您的选择参数可能 String 不正确。用作 Document.select() 参数的正确选择可以通过网页的 'Inspecting the element' 找到,最简单的方法是在 Chrome 浏览器中右键单击。

以下代码可能会产生更好的结果:

final Elements tableElements = response.parse()
                    .getElementsByClass("info")
                    .select("td");

for (Element element : tableElements) {

    String string = element.getElementsByClass("infoalt").text().trim()

    Log.d("Jsoup", string);

}

祝你好运,编码愉快!

代码:

Element div = doc.getElementById("contentinterior");
Elements tables = div.getElementsByTag("table");
Element table = tables.get(1);

String mSnow = table.getElementsByTag("tr").get(1).getElementsByTag("td").get(1).text();