我想在属性中获取url,但每次运行代码时都会出错。 以下是我想要提取链接的源URL的片段:
**<section class="rslwrp ">
<div id="tab-5" class="tab-contentphone current">
<ul class="rsl col-md-12 padding0">
<input type="hidden" id="closedown_flag0" value="0">
<li class="cntanr" data-href="https://www.somelink.com" >**
我正在运行的代码
public class Wholelist {
static String url = "https://www.somewebsite.com";
static Document doc;
public static void main(String args[]) throws IOException {
doc = getDoc(url);
getlink(doc);
}
@SuppressWarnings("deprecation")
static Document getDoc(String url){
try {
return Jsoup.connect(url).userAgent("mozilla/17.0").validateTLSCertificates(false).get();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public static void getlink(Document doc1){
Element elementlink = doc1.select("section.rslwrp").get(3).select("li.cntanr").get(5);
String url = elementlink.attr("data-href");
String Link = url;
System.out.println(Link);
}
}
请指明我的错误,并告诉我正确的方法。
答案 0 :(得分:0)
rslwrp是否有更多部分而不是1?您正在调用第三个元素,但只有一个元素,因此您将索引超出范围异常:
Element elementlink = doc1.select("section.rslwrp").get(3).select("li.cntanr").get(5);
答案 1 :(得分:0)
Element elementlink = doc1.select("section.rslwrp").get(3).select("li.cntanr").get(5);
在上面的行中首先检查所选元素是否存在。如果selected元素不为空,则仅检索该元素。
Element elementlink = null;
Elements sectionElements = doc1.select("section.rslwrp");
if(!sectionElements.isEmpty() && elementlink.size() >= 3) {
Elements liElements = elementlink.get(3).select("li.cntanr");
if(!liElements.isEmpty() && liElements.size() >= 5) {
elementlink = liElements.get(5);
}
}
答案 2 :(得分:0)
好像你正试图获得第三个不存在的“section”元素(只有一个)。该代码将与您的数据一起使用
Element elementlink = doc1.select("section.rslwrp").first().select("li.cntanr").first();
String url = elementlink.attr("data-href");
System.out.println(url);
按预期打印https://www.somelink.com
。希望它有所帮助!
评论后修改: 如果我理解正确,那就可以胜任。
List<String> urls = doc.select("section.rslwrp").first().select("li.cntanr")
.stream().map(e -> e.attr("data-href")).collect(Collectors.toList());
System.out.println(urls);
答案 3 :(得分:0)
您以错误的方式使用选择 你不需要使用两个单独的选择,并使用get()返回错误的元素 要使用URL
Element elementlink = doc1.select("li.cntanr").first();
String url = elementlink.attr("data-href");
String Link = url;
System.out.println(Link);
通过此选择直接获取你的元素