从 https://uzmanpara.milliyet.com.tr/doviz-kurlari/ 解析货币兑换数据
Parsing currency exchange data from https://uzmanpara.milliyet.com.tr/doviz-kurlari/
我准备了程序并在帮助下编写了这段代码,但前 10 次它起作用然后它给了我 NULL 值,
String url = "https://uzmanpara.milliyet.com.tr/doviz-kurlari/";
//Document doc = Jsoup.parse(url);
Document doc = null;
try {
doc = Jsoup.connect(url).timeout(6000).get();
} catch (IOException ex) {
Logger.getLogger(den3.class.getName()).log(Level.SEVERE, null, ex);
}
int i = 0;
String[] currencyStr = new String[11];
String[] buyStr = new String[11];
String[] sellStr = new String[11];
Elements elements = doc.select(".borsaMain > div:nth-child(2) > div:nth-child(1) > table.table-markets");
for (Element element : elements) {
Elements curreny = element.parent().select("td:nth-child(2)");
Elements buy = element.parent().select("td:nth-child(3)");
Elements sell = element.parent().select("td:nth-child(4)");
System.out.println(i);
currencyStr[i] = curreny.text();
buyStr[i] = buy.text();
sellStr[i] = sell.text();
System.out.println(String.format("%s [buy=%s, sell=%s]",
curreny.text(), buy.text(), sell.text()));
i++;
}
for(i = 0; i < 11; i++){
System.out.println("currency: " + currencyStr[i]);
System.out.println("buy: " + buyStr[i]);
System.out.println("sell: " + sellStr[i]);
}
这是代码,我想这是一个连接问题,但我无法解决它我使用 Netbeans,我是否必须更改 Netbeans 的连接属性,或者我是否必须在代码中添加更多内容
你能帮帮我吗?
连接没有问题。您的查询与页面结构不匹配。
在您页面的某处,有一个带有 class borsaMain
的元素,它有一个带有 class detL
的直接子元素。然后在detL
的后代树中的某个地方,有你的table
。您可以将其编写为以下 CSS 元素选择器查询:
.borsaMain > .detL table
结果中会有两个表,但我怀疑您正在寻找第一个。
所以基本上,你想要这样的东西:
Element table = doc.selectFirst(".borsaMain > .detL table");
for (Element row : table.select("tr:has(td)")) {
// your existing loop code
}
我准备了程序并在帮助下编写了这段代码,但前 10 次它起作用然后它给了我 NULL 值,
String url = "https://uzmanpara.milliyet.com.tr/doviz-kurlari/";
//Document doc = Jsoup.parse(url);
Document doc = null;
try {
doc = Jsoup.connect(url).timeout(6000).get();
} catch (IOException ex) {
Logger.getLogger(den3.class.getName()).log(Level.SEVERE, null, ex);
}
int i = 0;
String[] currencyStr = new String[11];
String[] buyStr = new String[11];
String[] sellStr = new String[11];
Elements elements = doc.select(".borsaMain > div:nth-child(2) > div:nth-child(1) > table.table-markets");
for (Element element : elements) {
Elements curreny = element.parent().select("td:nth-child(2)");
Elements buy = element.parent().select("td:nth-child(3)");
Elements sell = element.parent().select("td:nth-child(4)");
System.out.println(i);
currencyStr[i] = curreny.text();
buyStr[i] = buy.text();
sellStr[i] = sell.text();
System.out.println(String.format("%s [buy=%s, sell=%s]",
curreny.text(), buy.text(), sell.text()));
i++;
}
for(i = 0; i < 11; i++){
System.out.println("currency: " + currencyStr[i]);
System.out.println("buy: " + buyStr[i]);
System.out.println("sell: " + sellStr[i]);
}
这是代码,我想这是一个连接问题,但我无法解决它我使用 Netbeans,我是否必须更改 Netbeans 的连接属性,或者我是否必须在代码中添加更多内容
你能帮帮我吗?
连接没有问题。您的查询与页面结构不匹配。
在您页面的某处,有一个带有 class borsaMain
的元素,它有一个带有 class detL
的直接子元素。然后在detL
的后代树中的某个地方,有你的table
。您可以将其编写为以下 CSS 元素选择器查询:
.borsaMain > .detL table
结果中会有两个表,但我怀疑您正在寻找第一个。
所以基本上,你想要这样的东西:
Element table = doc.selectFirst(".borsaMain > .detL table");
for (Element row : table.select("tr:has(td)")) {
// your existing loop code
}