如何在Java中找到webscraping的选择器?

时间:2017-04-03 09:21:06

标签: java maven web-scraping css-selectors

我正试图从网站上抓取曲棍球比赛的统计数据。我能够准确地抓到的是,如果在那场比赛之前的最后一场比赛中主队已经赢了或者已经放弃了。所以有这个website,我试图从最后一栏获取信息。我在开发人员工具中使用了检查器,我猜我应该使用选择器“span.winLoseIcon a”。我认为这不是正确的选择器,因为当我运行程序时,String标题是空的。

这是我的代码段:

  import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;


public class HockeyScraper {




public static void main (String[] args) throws Exception {
    final Document page = Jsoup.connect("http://www.eredmenyek.com/merkozes/nBPiuHF3/#egymas-elleni;overall").get();

    for (Element games : page.select("span.winLoseIcon a")) {
        final String title = games.text();

        System.out.println(title);
    }

}

}

1 个答案:

答案 0 :(得分:0)

我查看了网站,它没有直接加载数据,它使用JavaScript加载数据,因此您无法直接通过该网址进行报废。我通过向http://d.eredmenyek.com/x/feed/d_hh_nBPiuHF3_hu_1发送获取请求来检查是否使用javascript来获取数据,其中包含一些强制性的标题信息。

您可以使用以下代码对我有用,以获得所有的标题得分等

    final Document page = Jsoup
            .connect("http://d.eredmenyek.com/x/feed/d_hh_nBPiuHF3_hu_1")
            .cookie("_ga", "GA1.2.1639955025.1491211513")
            .referrer("http://d.eredmenyek.com/x/feed/proxy-local")
            .userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36")
            .header("X-Fsign", "SW9D1eZo")
            .header("X-GeoIP", "1")
            .header("X-Requested-With", "XMLHttpRequest")
            .get();

    for (Element game : page.getElementsByClass("head_to_head").first().getElementsByTag("tr")) {
        System.out.println("----------------------------------------------------");
        System.out.println(game.text());

        Elements list = game.getElementsByClass("form-bg-last");
        if (!list.isEmpty()) {
            System.out.println("Title : " + list.first().attr("title"));
        }
    }