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

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)

我猜是网站中的某些东西引起了麻烦。 我希望有一个人可以帮助我 (抱歉英语不好)

谢谢!

我对你的代码做了两处修改:

更改 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

您访问的是范围,而不是锚点。

进行这些更改后,我得到以下输出:

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

编辑

我应该补充:如果你不想在目标页面中完全禁用 JavaScript,你可以使用以下代码让 JS 处理在错误后继续:

wc.getOptions().setThrowExceptionOnScriptError(false);

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