从jsoup的嵌套href中检索数据

时间:2019-11-06 18:38:38

标签: java jsoup href

我想从jsoup的嵌套href中检索数据,我的意思是: 我有href: https://www.sherdog.com/news/rankings/2/Sherdogs-Official-Mixed-Martial-Arts-Rankings-164999

我想从这10个数字中获取每个数据,例如:

1。 STIPE MIOCIC 年龄:37 要么 协会: 强大的格斗团队

2。 丹尼尔·科米耶 年龄:40 要么 协会: 美国跆拳道学院

等等。

该怎么做?

global $wp;

$current_url =  home_url( $wp->request );

1 个答案:

答案 0 :(得分:0)

您要查找的数据显示在单独的页面上-每个战斗机都有自己的页面,因此您必须逐一爬网所有页面以获取数据。
首先,必须使用选择器h2 > a[href]获取每个页面的链接:

String url = "https://www.sherdog.com/news/rankings/2/Sherdogs-Official-Mixed-Martial-Arts-Rankings-164999";
Document document = Jsoup.connect(url).get();
Elements fighters = document.select("h2 > a[href]");
for (Element fighter : fighters) {
     System.out.println(fighter.text() + " " + fighter.attr("href"));
}

之后,您可以加载每个页面并提取数据:

String fighterUrl = "https://www.sherdog.com" + fighter.attr("href"); 
Document doc = Jsoup.connect(fighterUrl).get();
Element fighterData = doc.select("div.data").first();
System.out.println(fighterData.text());

结合在一起,您将得到:

String url = "https://www.sherdog.com/news/rankings/2/Sherdogs-Official-Mixed-Martial-Arts-Rankings-164999";
Document document = Jsoup.connect(url).get();
Elements fighters = document.select("h2 > a[href]");
for (Element fighter : fighters) {
    System.out.println(fighter.text());
    String fighterUrl = "https://www.sherdog.com" + fighter.attr("href"); 
    Document doc = Jsoup.connect(fighterUrl).get();
    Element fighterData = doc.select("div.data").first();
    System.out.println(fighterData.text());
    System.out.println("---------------");
}

(部分)输出是:

  

妙语妙语   出生:1982-08-19年龄:37独立,俄亥俄美国身高6'4“ 193.04 cm体重245磅111.13 kg协会:强力格斗队职业:重量级赢得19 15 KO / TKO(79%)0提交(0 %)4个决定(21%)亏损3 2 KO / TKO(67%)0提交(0%)1个决定(33%)

     

丹尼尔·科米尔(Daniel Cormier)   出生:1979-03-20年龄:40美国加利福尼亚州圣何塞身高5'11“ 180.34厘米体重251磅113.85公斤协会:美国跆拳道学院类:重量级赢得22 10 KO / TKO(45%)5提交(23 %)7个决策(32%)损失2 1 KO / TKO(50%)0提交(0%)1个决策(50%)N / C 1

如果要获取年龄,关联性等独立字段,则必须使用正则表达式将其提取。