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 に答える