繁体   English   中英

如何从网页中获取价值? 网站出现错误

[英]How to get a value from a webpage? Error in the website

我正在尝试制作一个脚本来查找美元的价值(我来自阿根廷)并打印出来。

我设法通过一个网站(“ https://www.bna.com.ar/Personas ”)来做到这一点。 但是,在尝试使用其他网站时,我遇到了一些错误。 我使用相同的代码并将 XPath 更改为我想要查找的元素。

这是(“ http://www.dolarhoy.com.ar/ ”)的代码:

    static String getValuacion(){
        String str = "http://www.dolarhoy.com.ar/";
        java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF);
        String valuacion = "No se sabe";
        try {
            URL url = new URL(str);
            WebClient wc = new WebClient(BrowserVersion.CHROME);
            HtmlPage page = wc.getPage (url);
            valuacion = "Dolar Venta: " + getDolarVenta (page) + "\nDolar Compra: " + getDolarCompra (page);
        }catch (Exception ex){
            System.out.println ("Error al conectarse. Error: " + ex.getMessage ());
        }
        return valuacion;
    }

    private static String getDolarVenta(HtmlPage page) {
        HtmlAnchor anc = page.getFirstByXPath ("/html/body/div/div/div/div[1]/div[1]/div[1]/div[1]/h4/a/span");
        return anc.asText ();
    }
    private static String getDolarCompra(HtmlPage page) {
        HtmlAnchor anc = page.getFirstByXPath ("/html/body/div/div/div/div[1]/div[1]/div[1]/div[2]/h4/a/span");
        return anc.asText ();
    }
}

它会引发以下错误: Error al conectarse. Error: missing; before statement (script in https://www.cronista.com/ from (21, 9) to (120, 10)#109) Error al conectarse. Error: missing; before statement (script in https://www.cronista.com/ from (21, 9) to (120, 10)#109)

我想这是网站上的某些东西造成了麻烦。 我希望有人可以帮助我(抱歉英语不好)

谢谢!

我对您的代码进行了两项更改:

更改 1:我在此处添加了一个新行以禁用 JS,这导致站点某处出现问题:

WebClient wc = new WebClient(BrowserVersion.CHROME);
wc.getOptions().setJavaScriptEnabled(false);  // <-- new line

更改 2:我将您的HtmlAnchor类更改为HtmlSpan类:

HtmlSpan anc = page.getFirstByXPath(...); // <-- changed in 2 places

您正在访问跨度,而不是锚点。

在这些更改之后,我得到了以下 output:

Dolar Venta: $ 116,02
Dolar Compra: $ 115,37

希望有帮助。

编辑:

我应该补充一点:如果您不想在目标页面中完全禁用 JavaScript,则可以在出现错误后使用以下命令继续进行 JS 处理:

wc.getOptions().setThrowExceptionOnScriptError(false);

对于这个特定的 web 站点,您要访问的数据在 HTML 中可用 - 访问它不需要 JS。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM