0

我正在尝试使用jsoupParser for Android 解析 HTML。

如果我运行我的代码,我将无法进入 for 循环;程序执行在 for 循环之前停止(不输出错误)。

我已经把日志?当我在普通的 java 项目中运行相同的代码时,我能够得到结果吗?

private class DownloadTwitterTask extends
            AsyncTask<String, Void, List<String>> {
        String content;

        protected List<String> doInBackground(String... urls) {


            try {
                doc = Jsoup.connect("https://twitter.com/someperson/").get();


            } catch (IOException e) {
                // TODO Auto-generated catch block
                Log.d("Exception", "Exception");

                e.printStackTrace();
            }


            Elements elements = doc.getElementsByAttributeValue("class",
                    "js-tweet-text tweet-text");


            for (int j=0;j<elements.size();j++) {


                Element tmp = elements.get(j);
                String value = tmp.text();

                twitterList.add(value);

            }

            return twitterList;

        }

        protected void onPostExecute(List<String> result) {

            tadaptor = new TwitterLazyAdaptor(INFOActivity.this, result);
            // this.setListAdapter(fadaptor);
            lv1.setAdapter(tadaptor);

        }
    }
4

2 回答 2

1

你可以试试这个:

doc.select(".js-tweet-text.tweet-text")

这 。在开始上课,而 . 在空间的“tweet-text”之前。

更新: 我将我的解决方案与您的解决方案进行了比较。它给出了相同的结果。

您也可以尝试设置用户代理。有时一个站点会返回显着不同的 html。

        Document doc = Jsoup.connect("https://twitter.com/someperson/")
                .userAgent("Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:24.0) Gecko/20100101 Firefox/24.0")
                .get();
于 2013-10-17T13:09:23.623 回答
0

您还应该检查“doc”是否为空。如果它是空的,则可能连接有问题。您也可以像这样进行选择 Elements elements = doc.select("p.js-tweet-text tweet-text");,其中“p”是您查看的标签,然后是类属性。也有你设置 <uses-permission android:name="android.permission.INTERNET" />,你在哪里执行DownloadTwitterTask

于 2013-10-17T12:10:09.593 回答