簡體   English   中英

嘗試使用 Jsoup 從網絡抓取動態數據到 android 應用程序,但沒有獲得確切的數據

[英]Trying to scrape Dynamic data from web using Jsoup to android app,but not getting exact data

下面是我的代碼。 請轉到我正在解析的網頁 我想提取“德里負載”和“頻率”。 使用substring我可以正確地獲得“德里負載”,但是在頻率的情況下我會失敗,因為字符串的位置有時會發生變化。 因此,我得到以下結果:

50.0550.0<

因為有時十進制值會產生問題。

class parsepage  extends AsyncTask<String,Void,String> {
    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        TextView textView=(TextView) findViewById(R.id.txtload);
        Log.d("test",parseddata);
        textView.setText(parseddata);
    }

    @Override
    protected String doInBackground(String... params) {
        org.jsoup.nodes.Document doc;
        try {
            doc=  Jsoup.connect("http://www.delhisldc.org/DynamicData.aspx").get(); 

            Element element=doc.getElementById("LblLoad");
            Element element1=doc.getElementById("LblFrequency");
            Element element2=doc.getElementById("LblMaxToday");
            delhiload=element.toString().substring(95,99);
            delhifreq=element1.toString().substring(100,105);
            delhimaxload=element2.toString().substring(99,104);
            parseddata="Delhi Load:"+delhiload+System.getProperty ("line.separator")+"Frequency:"+delhifreq+System.getProperty ("line.separator")+"Max Load:"+delhimaxload;
        }
        catch (IOException e){
            e.printStackTrace();
        }

     //   this.publishProgress(parseddata);
        return parseddata;
    }
}

text()方法提供了獲取 html 元素的文本節點的功能(請參閱:https ://jsoup.org/cookbook/extracting-data/attributes-text-html )。 您的選擇器已經正確,只需使用text()而不是您的子字符串嘗試。

調整后的代碼

try {
    doc=  Jsoup.connect("http://www.delhisldc.org/DynamicData.aspx").get(); 

    Element element=doc.getElementById("LblLoad");
    Element element1=doc.getElementById("LblFrequency");
    Element element2=doc.getElementById("LblMaxToday");

    delhiload = element.text();
    delhifreq = element1.text();
    delhimaxload = element2.text();

    parseddata="Delhi Load:"+delhiload+System.getProperty ("line.separator")+"Frequency:"+delhifreq+System.getProperty ("line.separator")+"Max Load:"+delhimaxload;

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

parseddata輸出

Delhi Load:5271
Frequency:50.1
Max Load:5442 at 22:50:40

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM