gpt4 book ai didi

java - 获取 JSOUP 上的索引不起作用

转载 作者:行者123 更新时间:2023-11-30 00:58:27 25 4
gpt4 key购买 nike

try {
String url = "http://www.billboard.com/charts/artist-100";
String urlFound;
String closing = ")";
String start = "h";
Document doc = Jsoup.connect(url).get();
Elements urls = doc.getElementsByClass("chart-row__image");
for (Element u : urls) {
urlFound = u.attr("style");
String sub = urlFound.substring(urlFound.indexOf(start), urlFound.indexOf(closing));
System.out.println(sub);
//Log.d("URLS,", attr.substring(attr.indexOf("http://"), attr.indexOf(")")));
}
}
catch(IOException ex){
}

我试过几次调试,但我一直收到错误,Exception in thread "main"java.lang.StringIndexOutOfBoundsException: String index out of range: -1 我不确定为什么这也发生了吗?谁能告诉我哪里出了问题?

最佳答案

您正在从所有 div class="chart-row__image 元素中提取样式属性字符串,但要了解该组中的许多元素没有样式属性。在这种情况下,JSoup正在返回一个空字符串,这会打乱您的程序。解决方案不是这样做,而是让 jsoup 仅选择那些具有样式属性的元素。

例如,不是:

Elements urls = doc.getElementsByClass("chart-row__image");

而是:

Elements urls = doc.select(".chart-row__image[style]");

是的,不要忽略异常。

所以

    String url = "http://www.billboard.com/charts/artist-100";
String urlFound;
String closing = ")";
String start = "h";
Document doc;
try {
doc = Jsoup.connect(url).get();
// Elements urls = doc.getElementsByClass("chart-row__image");
Elements urls = doc.select(".chart-row__image[style]");
for (Element u : urls) {
urlFound = u.attr("style");
int startingIndex = urlFound.indexOf(start);
int endingIndex = urlFound.indexOf(closing);
if (startingIndex > 0 && endingIndex > 0) {
String sub = urlFound.substring(startingIndex, endingIndex);
System.out.println(sub);
}
}
} catch (IOException e) {
e.printStackTrace();
}

关于java - 获取 JSOUP 上的索引不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39802276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com