2017-09-27 35 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"); 
相关问题