代码之家  ›  专栏  ›  技术社区  ›  furkan dogu

如何使用jsoup获取div标签

  •  1
  • furkan dogu  · 技术社区  · 7 年前

    我正试图从网站上获取一些数据。看起来像

    <div id="1" class="tms"> 
        <div class="point">
         TINAZTEPE
        </div> 
        <div class="days"> 
         <div class="day">
          Hafta İçi
         </div> 
         <div>
          "06:45" 
          <i class="fa fa-wheelchair"></i>
         </div> 
         <div>
          "07:00" 
          <i class="fa fa-wheelchair"></i>
         </div> 
         <div>
          "07:15" 
          <i class="fa fa-wheelchair"></i>
         </div> 
         <div>
          "07:25" 
          <i class="fa fa-wheelchair"></i>
         </div> 
         <div>
          "07:30" 
          <i class="fa fa-wheelchair"></i>
         </div> 
         <div>
          "07:45" 
          <i class="fa fa-wheelchair"></i>
         </div> 
    

    我只需要得到div标签中的时间值。这是我的Java代码

     ArrayList<String> info=new ArrayList<String>();
        try
        {
            Document document = Jsoup.connect("https://nevakit.com/otobus/izmir/412").get();
            Elements broadcasts = document.select("div[id=1]");
    
            for (Element element : broadcasts) {
    
                info.add(element.getElementsByTag("div").text());
    
            }
    
            String total=null;
            for(String temp:info)
            {
                total+=temp;
            }
    
            txtView.setText(total);
    
        }catch(Exception e)
        {
            e.printStackTrace();
        }
    

    它没有给出任何错误,但在logcat上

    D/NetworkSecurityConfig:未指定网络安全配置,使用平台默认值

    我看到也许这可以帮助你解决这个问题。提前感谢您,如有任何回复,我们将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Munir    7 年前

    您需要使用AsynTask来执行此操作,请使用以下代码

     class PerformTask extends AsyncTask<Void,Void,Void>{
            ArrayList<String> info=new ArrayList<String>();
            @Override
            protected Void doInBackground(Void... voids) {
                try
                {
                    Document document = Jsoup.connect("https://nevakit.com/otobus/izmir/412").get();
                    Elements broadcasts = document.select("div[id=1]");
    
                    for (Element element : broadcasts) {
    
                        info.add(element.getElementsByTag("div").text());
    
                    }
    
    
                }catch(Exception e)
                {
                    e.printStackTrace();
                }
                return null;
            }
    
            @Override
            protected void onPostExecute(Void aVoid) {
                super.onPostExecute(aVoid);
                String total=null;
                 for(String temp:info)
                    {
                        total+=temp;
                    }
                txtView.setText(total);
            }
        }
    

    从下面的例子中调用它

    new PerformTask().execute();