Я не могу, ни за что в жизни, подстроить HtmlUnit для захвата этого сайта:
Я уверен, что это имеет отношение к огромному количеству сценариев, работающих в фоновом режиме. Возможно, этим сценариям не дают достаточно времени, чтобы полностью загрузиться?
Я также попытался просто захватить bing.com/travel и никакой успех также. Это повреждается на getPage функции нового клиента HtmlPage.
Вывод дает множество runtimeErrors ("данные, необходимые для завершения, эта операция еще не доступна"), все для того же sourceName ("http://www.bing.com/travel/jsxc.vjs?a=common&v=5.5.0-1278007084280")
Затем пара исключений, выданных для отсутствия ("" в паре сценариев на bing.com.
Затем это называет JavaScript, затем резко заканчивается.
Я понимаю, что это могло быть горсткой проблем, которые другие не смогли видеть, и поэтому если бы нет никаких предложений, кто-то возражал бы качать эти два сайта посредством тестовой реализации, которую собственные HtmlUnit используют и видят, могут ли они получить основной вывод текстовых результатов или XML? Я не пытаюсь сделать что-либо воображение здесь, просто получить некоторый основной текст или вывод XML результатов.
Было бы удобно знать, работает ли чужая реализация так, я могу продолжать сооружать мой на скорую руку к завершению.
КОД:
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.WebClient;
public class test {
public static void main(String[] args) throws Exception {
WebClient client = new WebClient();
System.out.println("webclient loaded");
HtmlPage currentPage = client.getPage("http://www.bing.com/travel/flight/flightSearch?form=FORMTRVLGENERIC&q=flights+from+SLC+to+BKK+leave+07%2F30%2F2010+return+08%2F11%2F2010+adults%3A1+class%3ACOACH&stoc=0&vo1=Salt+Lake+City%2C+UT+%28SLC%29+-+Salt+Lake+City+International+Airport&o=SLC&ve1=Bangkok%2C+Thailand+%28BKK%29+-+Suvarnabhumi+International&e=BKK&d1=07%2F30%2F2010&r1=08%2F11%2F2010&p=1&b=COACH&baf=true");
client.waitForBackgroundJavaScript(10000);
System.out.println("htmlpage init'd");
//System.out.println(currentPage.getTitleText());
String textSource = currentPage.asXml();
System.out.println(textSource);
}
}
Спасибо!
Попробуйте добавить вот это:
client.setThrowExceptionOnScriptError( false ) ;
Запуск занимает много времени, и парень извергает логи... но в конце концов появилась страница:
htmlpage init'd
<?xml version="1.0" encoding="utf-8"?>
<html id="">
<head>
...