Java Jsoup获取指定类链接无输出问题求助
问题:Jsoup无法匹配指定类的链接,无输出
你的代码没有输出的核心原因是CSS选择器写法错误:原代码里的a[href].ssrcss-6m4230-PromoLink e1f5wbog1会被Jsoup解析为“先选中带有href属性且拥有ssrcss-6m4230-PromoLink类的a标签,然后选中它们的后代元素中带有e1f5wbog1类的元素”,但你的HTML里e1f5wbog1是a标签本身的第二个class,并不是后代元素的类,所以匹配不到任何元素。
修正方案
把多个class用.连接,正确的选择器写法如下:
Elements links = document.select("a[href].ssrcss-6m4230-PromoLink.e1f5wbog1");
完整修正后的代码
import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class Anyclass { public static void main(String[] args) throws IOException { String html = "<a href=\"/sport/golf/66227692\" class=\"ssrcss-6m4230-PromoLink e1f5wbog1\"><span role=\"text\"><p class=\"ssrcss-6arcww-PromoHeadline e1f5wbog6\"><span aria-hidden=\"false\">McIlroy's 'perfect preparation' for Hoylake Open</span></p></span></a>"; Document document = Jsoup.parse(html); Elements links = document.select("a[href].ssrcss-6m4230-PromoLink.e1f5wbog1"); for (Element link : links) { System.out.println("my beutiful link : " + link.attr("href")); } } }
补充说明
- 当元素拥有多个class时,CSS选择器中要用
.把多个class名连在一起,不能用空格(空格表示后代元素关系) - 也可以用属性选择器
a[href][class="ssrcss-6m4230-PromoLink e1f5wbog1"],但这种写法要求class的顺序和内容完全匹配,灵活性不如多class选择器
内容的提问来源于stack exchange,提问作者Robbie
相关产品推荐
相关产品推荐

