JSoup XPath / Selector查询不起作用

时间:2018-05-30 05:48:00

标签: java jsoup xsoup

我正在尝试从此页面中提取GitHub链接

https://plugins.jenkins.io/hugo

val doc = JSoup.parse(“https://plugins.jenkins.io/hugo”)

来自Chrome的XPath

//*[@id="grid-box"]/div/section/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/a

Chrome中的选择器

#grid-box > div > section > div.dialog > div.content > div > div > div.col-md-9.main > div > div > div:nth-child(1) > div:nth-child(2) > a

JSoup查询

#grid-box > div > section > div:eq(2) > div:eq(2) > div > div > div:eq(1) > div > div > div:eq(1) > div:eq(2) > a

代码段

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import us.codecraft.xsoup.Xsoup;

val doc = Jsoup.parse("https://plugins.jenkins.io/hugo")
Xsoup.compile("""//*[@id="grid-box"]/div/section/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/a""").evaluate(doc).list

尝试使用XPath,Selector以及无法提取值

我需要此页面上的github链接

<a href="https://github.com/jenkinsci/hugo-plugin">GitHub →</a>

如果可能,有人可以指出我正确的API吗?

2 个答案:

答案 0 :(得分:0)

你有没有试过像:

Document doc = Jsoup.parse("https://plugins.jenkins.io/hugo");    
Elements aTags = doc.select("a[data-reactid=\"30\"]");

应解析此问题:<a href="https://github.com/jenkinsci/hugo-plugin" data-reactid="30">GitHub →</a>

然后从aTags您可以aTags.attr("href"),它应该为您提供网址。这就是主意。

如果您看不到data-reactid,那么您可以divs = doc.select("div[col-md-4]") divsa标记和href属性。我们的想法是从HTML标记和属性中找到一些独特的东西,然后定位它以获取URL。

答案 1 :(得分:0)

这应该是你想要的。

Elements githubLinks = doc.getElementsByAttributeValueStarting("href", "https://github.com/");
for(Element link : githubLinks) {
    System.out.println(link.attr("href"));
}