我正在尝试编写一个程序来访问页面http://www.bmfbovespa.com.br/cias-listadas/empresas-listadas/BuscaEmpresaListada.aspx?Idioma=pt-br,然后在页面上点击“todas”按钮。
预计结果是一张名为许多公司的桌子,但我不知道为什么我没有得到它。
我的代码:
package xx;
import java.io.IOException;
import java.net.MalformedURLException;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
public class teste {
public static void main(String args[]) throws FailingHttpStatusCodeException, MalformedURLException, IOException
{
HtmlPage page = null;
String url = "http://www.bmfbovespa.com.br/cias-listadas/empresas-listadas/BuscaEmpresaListada.aspx?Idioma=pt-br";
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setJavaScriptEnabled(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setTimeout(30000);
page = webClient.getPage( url );
System.out.println("Current page: Empresas Listadas | BM&FBOVESPA");
HtmlElement theElement1 = (HtmlElement) page.getElementById("ctl00_contentPlaceHolderConteudo_BuscaNomeEmpresa1_btnTodas");
page = theElement1.click();
System.out.println(page.asText());
System.out.println("Test has completed successfully");
}
}
答案 0 :(得分:1)
在浏览了那个页面后,我注意到它正在使用AJAX来获取数据。您似乎没有等待数据的进展,这可能是问题。
您应首先查看HTMLUnit FAQ。
然后,可能这个question可能有助于提供一个如何做到这一点的具体例子。