Я не могу, на всю жизнь, настроить HtmlUnit для захвата этого сайта:
Я уверен, что это связано с огромным количеством сценариев, работающих в фоновом режиме. Возможно, этим сценариям не дается достаточно времени для полной загрузки?
Я также пытался просто зайти на сайт bing.com/travel, но безуспешно. Это ломает функцию getPage нового клиента HtmlPage.
Вывод дает множество ошибок времени выполнения («данные, необходимые для выполнения этой операции, еще недоступны»), все для одного и того же имени источника («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);
}
}
Спасибо!