[英]How to get a specific tag attribute text in java with JSoup?
我想在属性中获取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);
}
}
请指定我的错误,并告诉我正确的方法。
rslwrp的节是否多于1? 您正在调用第三个元素,但是只有一个元素,因此索引超出范围异常:
Element elementlink = doc1.select("section.rslwrp").get(3).select("li.cntanr").get(5);
Element elementlink = doc1.select("section.rslwrp").get(3).select("li.cntanr").get(5);
在上一行中,首先检查所选元素是否存在。 如果选择的元素不为空,则仅检索该元素。
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);
}
}
似乎您正在尝试获取第三个不存在的“ 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);
您以错误的方式使用选择不需要使用两个单独的选择,并且使用get()返回错误的元素即可使用URL
Element elementlink = doc1.select("li.cntanr").first();
String url = elementlink.attr("data-href");
String Link = url;
System.out.println(Link);
通过此选择,您可以直接获取您的li元素
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.