如何从网页中获取值?网站错误
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 来访问它。
我正在尝试制作一个脚本来查找美元的价值(我来自阿根廷)并打印出来。
我设法用一个网站 ("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 来访问它。