Невозможный сайт для HtmlUnit?

Я не могу, ни за что в жизни, подстроить HtmlUnit для захвата этого сайта:

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

Я уверен, что это имеет отношение к огромному количеству сценариев, работающих в фоновом режиме. Возможно, этим сценариям не дают достаточно времени, чтобы полностью загрузиться?

Я также попытался просто захватить 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);

}

}

Спасибо!

7
задан Stu Kalide 15 July 2010 в 06:03
поделиться

1 ответ

Попробуйте добавить вот это:

client.setThrowExceptionOnScriptError( false ) ;

Запуск занимает много времени, и парень извергает логи... но в конце концов появилась страница:

htmlpage init'd
<?xml version="1.0" encoding="utf-8"?>
<html id="">
  <head>
   ...
3
ответ дан 7 December 2019 в 07:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: