我正在尝试从此页面中提取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吗?
答案 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]")
divs
,a
标记和href
属性。我们的想法是从HTML标记和属性中找到一些独特的东西,然后定位它以获取URL。
答案 1 :(得分:0)
这应该是你想要的。
Elements githubLinks = doc.getElementsByAttributeValueStarting("href", "https://github.com/");
for(Element link : githubLinks) {
System.out.println(link.attr("href"));
}