Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

287
Visualizações
Java: problema de HtmlUnit al recuperar el título de la página

Esta es mi primera publicación de StackOverflow, así que intentaré describir mi problema lo mejor que pueda.

Quiero crear un programa para recuperar las reseñas de las páginas de TripAdvisor, traté de hacerlo a través de la API pero no respondieron cuando solicité la clave API, por lo que mi alternativa es hacerlo con un WebCrawler.

Para hacerlo tengo un proyecto Spring y uso HtmlUnit, una herramienta que nunca usé, así que para probarlo mi primer ejercicio es recuperar el título de una página web, así que tengo implementado el siguiente código:

 @PostConstruct public void init() throws Exception { TimeZone.setDefault(TimeZone.getTimeZone("Europe/Madrid")); getRequest.getPageName(); }

Eso llama al siguiente método:

 @Test public void getPageName() throws Exception { try (final WebClient webClient = new WebClient()) { final HtmlPage page = webClient.getPage("https://www.tripadvisor.com"); System.out.println(page.getTitleText()); } catch (Exception e){ System.out.println("ERROR " + e); } }

Cuando ejecuto el código con https://www.google.com obtengo la respuesta "Google" como se esperaba, pero cuando lo pruebo con https://www.tripadvisor.com o https://www.youtube.com Me sale un error que no puedo entender:

 Caused by: net.sourceforge.htmlunit.corejs.javascript.EvaluatorException: syntax error (https://static.tacdn.com/assets/DDGchX.17d9b05f.js#1)

Investigué rápidamente para ver qué significa el problema, encontré un par de publicaciones sobre un caso similar, pero no puedo entender cuál es la causa. ¿Está relacionado con un problema de Javascript? O un problema de permisos?

Si se requiere más información para analizar el problema, no dude en solicitarla, gracias de antemano por el tiempo dedicado de cualquier lector y disculpe si no respeté alguna de las reglas/protocolos de StackOverflow.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

 try (final WebClient webClient = new WebClient()) { webClient.getOptions().setThrowExceptionOnScriptError(false); final HtmlPage page = webClient.getPage("https://www.tripadvisor.com"); // final HtmlPage page = webClient.getPage("https://www.youtube.com"); System.out.println("****************"); System.out.println(page.getTitleText()); System.out.println("****************"); } catch (Exception e){ System.out.println("ERROR " + e); }

Al menos con la versión reciente oh HtmlUnit esto produce

 **************** Tripadvisor: Read Reviews, Compare Prices & Book ****************

¿Qué hace setThrowExceptionOnScriptError?

 /** * Changes the behavior of this webclient when a script error occurs. * @param enabled indicates if exception should be thrown or not */

HtmlUnit utiliza Rhino ( https://github.com/mozilla/rhino ) como base para la compatibilidad con JavaScript. Y Rhino no es compatible con todas las funciones de lenguaje disponibles en JavaScript hoy (mejorando con cada versión https://htmlunit.sourceforge.io/changes-report.html ). Pero al menos algunas de las páginas usan estas funciones (por ejemplo, para rastrearlo) y, debido a esto, ve el error. HtmlUnit se diseñó originalmente como un marco de prueba, por lo que se detiene ante cada error.

Si cambia eso (vea la configuración de la opción anterior), aún obtiene la salida del registro para cada error, pero el procesamiento de JavaScript continúa (lo mismo en los navegadores reales). También puede cambiar el registro; consulte https://htmlunit.sourceforge.io/logging.html .

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda