Запутывать сайты, используя htmlunit - PullRequest
0 голосов
/ 02 октября 2011

Я пытаюсь выгрузить все содержимое определенного сайта с помощью HTMLUnit, но когда я пытаюсь сделать это на определенном (довольно сложном) сайте, я получаю пустой файл (не пустой файл как таковой, но онесть пустой тег head, пустой тег body и все).

Сайт https://www.abcdin.cl/abcdin/abcdin.nsf#https://www.abcdin.cl/abcdin/abcdin.nsf/linea?openpage&cat=Audio&cattxt=TV%20y%20Audio&catpos=03&linea=LCD&lineatxt=LCD%20&

А вот мой код:

BufferedWriter writer = new BufferedWriter(new FileWriter(fullOutputPath));
HtmlPage page;
final WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_8);
webClient.setCssEnabled(false);
webClient.setPopupBlockerEnabled(true);
webClient.setRedirectEnabled(true);
webClient.setThrowExceptionOnScriptError(false);
webClient.setThrowExceptionOnFailingStatusCode(false);
webClient.setUseInsecureSSL(true);
webClient.setJavaScriptEnabled(true);
page = webClient.getPage(url);
dumpString += page.asXml();
writer.write(dumpString);
writer.close();
webClient.closeAllWindows();

Некоторые люди говорятчто мне нужно ввести паузу в моем коде, поскольку загрузка страницы в Google Chrome занимает некоторое время, но я установил длинные паузы, и она не работает.

Спасибо заранее.

1 Ответ

0 голосов
/ 04 октября 2011

Только некоторые идеи ...

Получение этого URL с помощью wget возвращает нетривиальный файл HTML.Аналогично запустите ваш код с webClient.setJavaScriptEnabled(false).Так что это определенно связано с Javascript на странице.

С включенным Javascript я вижу из журналов, что куча заданий Javascript ставится в очередь, и я вижу соответствующие ошибки, подобные этой:

EcmaError: lineNumber=[49] column=[0] lineSource=[<no source>] name=[TypeError] sourceName=[https://www.abcdin.cl/js/jquery/jquery-1.4.2.min.js] message=[TypeError: Cannot read property "nodeType" from undefined (https://www.abcdin.cl/js/jquery/jquery-1.4.2.min.js#49)]
com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot read property "nodeType" from undefined (https://www.abcdin.cl/js/jquery/jquery-1.4.2.min.js#49)
at     
com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:601)

Может быть, эти работы предназначены для заполнения вашего HTML?Таким образом, когда они терпят неудачу, полученный HTML-код пуст?

Ошибка выглядит странно, поскольку HtmlUnit обычно не имеет проблем с JQuery.Я подозреваю, что проблема связана с кодом, вызывающим эту конкретную строку библиотеки JQuery.

...