我编写了一个程序,用于在单击按钮后从网页中删除源代码.我无法抓住正确的页面,因为我相信正在发送一个AJAX请求,而我不等待这个响应发生.我的代码目前是:
public class Htmlunitscraper {
private static String s = "http://cpdocket.cp.cuyahogacounty.us/SheriffSearch/results.aspx?q=searchType%3dSaleDate%26searchString%3d10%2f21%2f2013%26foreclosureType%3d%27NONT%27%2c+%27PAR%27%2c+%27COMM%27%2c+%27TXLN%27";
public static String scrapeWebsite() throws IOException {
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
final WebClient webClient = new WebClient();
final HtmlPage page = webClient.getPage(s);
final HtmlForm form = page.getForms().get(2);
final HtmlSubmitInput button = form.getInputByValue(">");
final HtmlPage page2 = button.click();
String originalHtml = page2.refresh().getWebResponse().getContentAsString();
return originalHtml;
}
}
Run Code Online (Sandbox Code Playgroud)
在引用此链接后,我相信要解决此问题,我可以实现方法"webClient.waitForBackgroundJavaScript(10000)".唯一的问题是我不明白该怎么做,因为每次单击按钮我都会创建一个HtmlPage对象,而不是WebClient对象.我怎样才能使用这种方法来解决问题呢?
我正在编写一个程序,需要从输入文本文件中读取数据,并在完成日期时保存变量.我正在使用Htmlunit,并遇到错误:
com.gargoylesoftware.htmlunit.ScriptException: Exception invoking open
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:684)
at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:602)
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:616)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:591)
at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:985)
at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventHandler(EventListenersContainer.java:210)
at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:230)
at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:804)
at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:738)
at com.gargoylesoftware.htmlunit.html.HtmlElement$1.run(HtmlElement.java:869)
at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:602)
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:874)
at com.gargoylesoftware.htmlunit.html.HtmlElement.doClickFireClickEvent(HtmlElement.java:1311)
at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1253)
at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1205)
at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1160)
at Docketscraper.scrapeWebsite(Docketscraper.java:58)
at Docketscraper.starter(Docketscraper.java:40)
Run Code Online (Sandbox Code Playgroud)
我的代码是:
private static String startingMonth;
private static String startingDay;
private static String startingYear;
private static String endingMonth;
private static String endingDay;
private static String endingYear;
public static void starter() throws IOException{
Scanner sc = new …Run Code Online (Sandbox Code Playgroud) 我在我的代码中遇到IllegalMonitorStateException,我不知道为什么我收到它以及如何解决它.我当前的代码是,并且try块中发生错误:
public static String scrapeWebsite() throws IOException {
final WebClient webClient = new WebClient();
final HtmlPage page = webClient.getPage(s);
final HtmlForm form = page.getForms().get(0);
final HtmlSubmitInput button = form.getInputByValue(">");
final HtmlPage page2 = button.click();
try {
page2.wait(1);
}
catch(InterruptedException e)
{
System.out.println("error");
}
String originalHtml = page2.refresh().getWebResponse().getContentAsString();
return originalHtml;
}
}
Run Code Online (Sandbox Code Playgroud) void function(int N){
for (int i=0; i<N; i++)
for (int j= 0; j< i; j++)
System.out.println("j")
}
Run Code Online (Sandbox Code Playgroud)
对于这个函数,Big O如何依赖于第二个for循环,因为它是j
另外,如果j <i被改为j <N*N,那么大O是否就是O(N ^ 3)呢?
我需要解析我的main方法,看看boolean是设置为true还是false,但是每次运行它都会被设置为false.
当我去运行程序时,这是我的交互输出:
> java ScraperTestRunner1 true, "/Desktop/imputfile.txt"
2
false
/Desktop/imputfile.txt
Run Code Online (Sandbox Code Playgroud)
我的主要方法的代码是:
public static void main(String[] args){
System.out.println(args.length);
if (args.length == 2) {
docketBoolean = Boolean.parseBoolean(args[0]);
inputDateFileString = (args[1]);
System.out.println(docketBoolean);
System.out.println(inputDateFileString);
Run Code Online (Sandbox Code Playgroud)
在我检查args.length是否为1之前,只搜索了布尔值,它会给我正确的布尔值,但现在不是.知道为什么会这样吗?