【问题标题】:parsing html with css selector jsoup使用 css 选择器 jsoup 解析 html
【发布时间】:2018-08-21 19:05:06
【问题描述】:

我正在尝试从 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;
}

}

也试探
String 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()。文本();

这给了我一个空值。

有什么建议吗?

谢谢!

【问题讨论】:

    标签: html parsing jsoup


    【解决方案1】:

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

    【讨论】:

    • 这会一直返回一个空值
    • public class Main { public static void main(String[] args) throws IOException { Document docDolarHoy = Jsoup.connect("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); } }
    • 输出:dolarHoy:$ 30.84
    • 嗨,如果使用“dolarhoy.com”,它会返回格式错误的 URL:dolarhoy.com,如果使用“dolarhoy.com”,则会抛出空指针
    • 对,当我将我的代码粘贴为评论时,所以更改了它。它应该是 http://www 。 dolarhoy.com 当然没有空格。
    猜你喜欢
    • 2011-02-06
    • 2013-11-25
    • 2014-10-31
    • 2013-12-11
    • 2016-04-07
    • 2012-11-06
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    相关资源
    最近更新 更多