簡體   English   中英

如何從具有相同類的不同div獲取數據並將其存儲在.csv文件中

[英]How to get data from different divs which have same class and store it in .csv file

我必須解析的網頁URL中有多個div,它們具有相同的類名,但名稱,值和id不同。
例如。

 <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)在創建文件之前,我做了一些代碼更改,但沒有讀取上面提到的日期。 它檢索默認日期為fromDate = 27/09/2017 toDate = 27/09/2017的數據。
誰能告訴我哪里出問題了?

您正在嘗試getElementsByClass("fromDate") ,而html代碼段中的<input>'s都沒有class fromDate 一個具有name='fromDate' ,因此要檢索它,您需要調用doc.getElementsByAttributeValue("name", "fromDate") 有關更多信息,請訪問https://jsoup.org/apidocs/index.html?org/jsoup/nodes/Element.html

HTML代碼中沒有fromDate類, <tr><td>元素,但是您嘗試在代碼中對其進行迭代。 由於所選元素列表為空,因此for循環無法啟動,因此不會將任何內容寫入輸出CSV文件。

如果要選擇<input name="fromDate" ...>類的元素,則可以使用屬性選擇器

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

您可以使用attr(String)方法獲取該<input>的值:

String value = inputs.get(0).attr("value");

暫無
暫無

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

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