2017-09-27 78 views
0

我在一個網頁URL中有多個div,我必須解析它們具有相同的類名但名稱,值和ID不同。例如
如何從具有相同類的不同div中獲取數據並將其存儲在.csv文件中

<div class="form-group"> 
 
    <input class="form-control is-datepick" name="fromDate" value="01/07/2017" type="text" id="popupDatepicker" placeholder="Date"> 
 
    <input class="form-control is-datepick" name="toDate" value="26/09/2017" type="text" id="popupDatepicker2" placeholder="Date"> 
 
</div>

現在!我想在上面提供的日期之間獲取數據。爲此,我使用了jsoup庫。

doc = Jsoup.connect(tempUrl).timeout(10000).data("fromDate", "01/07/2017") 
       .data("toDate", dateFormat.format(date)) 
       .data("type", "text") 
       .data("search", "search") 
       .timeout(100000).get(); 

我用getElementsByClass()來獲取數據。但不幸的是,它不工作。

File fold = new File("D:\\KSE\\TMP\\NCCPL-YEARLY.csv"); 
fold.delete(); 
File fnew = new File("D:\\KSE\\TMP\\NCCPL-YEARLY.csv"); 
for (Element table : doc.getElementsByClass("fromDate")) 
{ 

    for (Element trElement : table.getElementsByTag("tr")) { 

     trElement2 = trElement.getElementsByTag("tr"); 
     tdElements = trElement.getElementsByTag("td"); 
     FileWriter sb = new FileWriter(fnew, true); 

     //if (table.hasClass("marketData")) { //&&(tdElements.hasClass("tableHead")&&tdElements.hasClass("tableSubHead")) 
     for (Iterator<Element> it = tdElements.iterator(); it.hasNext();) { 
      if (it.hasNext()&& i>0) { 
       ///sb.append(" | "); 
       sb.append(" \r\n "); 
      } 

      for (Iterator<Element> it2 = tdElements.iterator(); it.hasNext();) { 
       Element tdElement2 = it.next(); 
       final String content = tdElement2.text().replace(",", ""); 
       if (it2.hasNext()) { 

        sb.append(formatData(content)); 
        sb.append(" | "); 

       } 

      } 

      System.out.println(sb.toString()); 
      sb.flush(); 
      sb.close(); 
      i++; 
     } 

     System.out.println(sampleList.add(tdElements)); 


    } 

} 
} 

程序已成功編譯並且沒有錯誤。目前,我面臨兩個問題。
1)它沒有創建任何csv文件。
2)在創建文件之前,我對代碼做了一些更改,但沒有閱讀上面提到的日期。它檢索數據的默認日期是從Date = 27/09/2017 toDate = 27/09/2017。
任何人都可以告訴我我哪裏出錯了嗎?

回答

0

沒有與fromDate類,<tr>,也不在你的HTML代碼<td>沒有元素,但你嘗試在你的代碼上進行遍歷。由於所選元素列表爲空,因此for循環無法啓動,因此沒有任何內容寫入輸出CSV文件。

如果您想選擇像<input name="fromDate" ...>元素,你可以使用attribute selector

Elements inputs = doc.select("input[name=fromDate]"); 

而且你可以得到<input>attr(String) method值:

String value = inputs.get(0).attr("value"); 
相關問題