使用 css 选择器 jsoup 解析 html

parsing html with css selector jsoup

我正在尝试从 www.dolarhoy.com

中获取下图中显示的值

我用 jsoup 做这样的事情,但下面的代码不起作用。

private static String obtenerCotizacion() throws IOException {
    Document docDolarHoy = Jsoup.connect("http://www.dolarhoy.com").get();

    String dolar= docDolarHoy.select("div.col-md-6.venta > h4 > span").first().text();
    System.out.println("dolarHoy: " + dolar); 

    return dolar;
}

}

也试探
字符串 dolar= docDolarHoy.select("body > div.container.body-content > div > div > div.col-md-8 > div.row > div.col-md-6.venta > h4 > span").first().text();

字符串美元= docDolarHoy.select("div.col-md-6:nth-child(2) > h4:nth-child(1) > span:nth-child(1)").first().text();

这返回一个空值。

有什么建议吗?

谢谢!

使用浏览器的开发人员工具,我得到了以下选择器 - div.col-md-6:nth-child(2) > h4:nth-child(1) > span:nth-child(1)
如果您仍然不明白 - 将浏览器的 userAgent 字符串添加到 get 请求中,例如 -

Document docDolarHoy = Jsoup.connect("http://www.dolarhoy.com")
    .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0")
    .get();

编辑 经过一些试验后,完整的工作代码(减去异常处理)是:

Public static void main(String[] args) throws IOException {

    Document docDolarHoy = Jsoup.connect("http://www.dolarhoy.com")
            .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0")
            .get();
    String dolar= docDolarHoy.select("div.col-md-6.venta > h4 > span").first().text();
    System.out.println("dolarHoy: " + dolar);
    System.out.println(docDolarHoy.html());     
}

并且输出:

dolarHoy: $ 30.84