用css选择器jsoup解析html

时间:2018-08-21 19:05:06

标签: html parsing jsoup

我正在尝试从www.dolarhoy.com Dolar Hoy

中获取下图所示的值。

我使用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();

String dolar = docDolarHoy.select(“ div.col-md-6:nth-​​child(2)> h4:nth-​​child(1)> span:nth-​​child(1)”)。first()。 text();

这给了我一个空值。

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

使用浏览器的开发人员工具,我得到了以下选择器-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