我在网页网址中有多个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>
&#13;
现在!我想在上面提供的日期之间获取数据。为此,我使用了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)我在创建文件之前对代码进行了一些更改,但没有阅读上面提到的日期。它检索默认日期的数据,该日期是日期= 27/09/2017至日期= 27/09/2017 谁能告诉我哪里出错了?
答案 0 :(得分:0)
您正在尝试getElementsByClass("fromDate")
,而html代码段中的<input>'s
都没有fromDate
类。一个人有name='fromDate'
,因此要检索您需要致电doc.getElementsByAttributeValue("name", "fromDate")
。有关https://jsoup.org/apidocs/index.html?org/jsoup/nodes/Element.html
答案 1 :(得分:0)
HTML代码中没有fromDate
类,<tr>
和<td>
的元素,但您尝试在代码中对它们进行迭代。由于所选元素列表为空,for
循环无法启动,因此不会将任何内容写入输出CSV文件。
如果您想选择<input name="fromDate" ...>
等元素,可以使用attribute selector:
Elements inputs = doc.select("input[name=fromDate]");
您可以使用attr(String)
method
<input>
的值
String value = inputs.get(0).attr("value");