【问题标题】:How to find the selector for webscraping in Java?如何在 Java 中找到用于网页抓取的选择器?
【发布时间】:2017-08-28 02:21:15
【问题描述】:

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

这是我的代码 sn-p:

  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);
    }

}

}

【问题讨论】:

    标签: java maven web-scraping css-selectors


    【解决方案1】:

    我查看了网站,它不是直接加载数据,它使用 JavaScript 加载数据,所以你不能直接通过那个 url 报废。我通过向http://d.eredmenyek.com/x/feed/d_hh_nBPiuHF3_hu_1 发送带有一些强制性标头信息的get 请求来检查它是否使用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"));
            }
        }
    

    【讨论】:

    • 你是对的,你的代码我们得到了一些文本。您是否知道如何从最后一列(赢或输)中获取标题?
    猜你喜欢
    • 1970-01-01
    • 2021-09-25
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 2021-10-26
    相关资源
    最近更新 更多