【问题标题】:Trying to scrape Dynamic data from web using Jsoup to android app,but not getting exact data尝试使用 Jsoup 将动态数据从 Web 抓取到 android 应用程序,但没有获得准确的数据
【发布时间】:2016-10-02 17:28:04
【问题描述】:

下面是我的代码。请转到我正在解析的webpage。我想提取“德里负载”和“频率”。使用substring 我正确地得到了“delhi load”,但是在频率的情况下我失败了,因为字符串的位置有时会改变。因此,我得到以下结果:

50.05 或 50.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;
    }
}

【问题讨论】:

  • please goto webpage that i am parsing 哪个网页的链接在哪里?您从网页中获取的数据是什么,是否看到浏览器控制台中呈现的 html?
  • 这个问题的答案是否完整?然后请在 cmets 中标记答案或发布后续问题(请参阅stackoverflow.com/help/someone-answers)。

标签: java android web-scraping jsoup


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-26
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2015-04-22
    相关资源
    最近更新 更多