0

jsoup を使用して Web ページを解析しようとしていますが、次のコードを使用してすべて正常に動作しています。

class DownloadSearchResultsTask extends AsyncTask<String, Integer, ArrayList> {
    private String link = "link";
    private String title = "title";
    private String vote = "vote";
    private String age = "age";
    private String size = "size";

    private String seeders = "seeders";
    private String leechers = "leachers";


    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub 
        super.onPreExecute();
    }


    @Override
    protected ArrayList doInBackground(String... params) {
        // TODO Auto-generated method stub ArrayList

        <HashMap<String, String>> searchResult = new ArrayList<HashMap<String, String>>();
        HashMap<String, String> map;
        String link, title, vote, age, size, seeders, leechers;

        try {
            HttpURLConnection httpURLConnection = (HttpURLConnection) new URL("http://www.facebook.com").openConnection();
            Log.d("VIVZ", httpURLConnection.getContentLength() + "");
        }
        catch( MalformedURLException e1 ) {
            // TODO Auto-generated catch block 
            e1.printStackTrace();
        }
        catch( IOException e1 ) {
            // TODO Auto-generated catch block 
            e1.printStackTrace();
        }

        Document mDocument;

        try {
            long l1 = System.nanoTime();
            Log.e("VIVZ", l1 + "");

            mDocument = Jsoup.connect(params[0]).userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6").referrer("http://www.google.com").get();

            long l2 = System.nanoTime();
            Log.e("VIVZ", (l2 - l1) + "");
            Elements mResults = mDocument.select("div.results dl");

            for( Element result : mResults ) {
                map = new HashMap<String, String>();
                Elements elements = result.select("dt a");

                for( Element linkAndTitle : elements ) {

                    link = linkAndTitle.attr("abs:href");
                    title = linkAndTitle.text();
                    map.put(this.link, link);
                    map.put(this.title, title);
                }

                elements = result.select("dd span.v");

                for( Element v : elements ) {
                    vote = v.text();
                    map.put(this.vote, vote);
                }

                elements = result.select("dd span.a");

                for( Element a : elements ) {
                    age = a.text();
                    map.put(this.age, age);
                }

                elements = result.select("dd span.s");

                for( Element s : elements ) {
                    size = s.text();
                    map.put(this.size, size);
                }

                elements = result.select("dd span.u");

                for( Element u : elements ) {
                    seeders = u.text();
                    map.put(this.seeders, seeders);
                }

                elements = result.select("dd span.d");

                for( Element d : elements ) {
                    leechers = d.text();
                    map.put(this.leechers, leechers);
                }

                searchResult.add(map);

            }
            Log.e("VIVZ", searchResult.toString());

            return searchResult;
        }
        catch( IOException e ) {
            // TODO Auto-generated catch block 
            Log.e("VIVZ", e + "");

        }
        return null;
    }


    @Override
    protected void onPostExecute(ArrayList result) {
        // TODO Auto-generated method stub 
        super.onPostExecute(result);
    }
}

問題は、ページを解析する前にページのサイズを取得し、決定的な進行状況バーを表示したいことです。助けてください.....

事前に感謝

4

1 に答える 1

0

http 応答の Content-Length ヘッダーを読み取ります。

次のようなもので、Jsoupを直接使用して実際に実行できます。

Connection conn = Jsoup.connect(url);
conn.userAgent("xxx");
Connection.Response response = conn.execute();
int length = response.header("Content-Length");
Document doc = response.parse();
于 2013-10-19T04:16:55.057 に答える