【发布时间】:2022-01-04 10:46:22
【问题描述】:
这是我的第一篇 StackOverflow 帖子,所以我会尽量描述我的问题。
我想创建一个程序来从 TripAdvisor 页面检索评论,我尝试通过 API 来完成,但当我请求 API 密钥时他们没有响应,所以我的替代方法是使用 WebCrawler 来完成。
为此,我有一个 Spring 项目并使用 HtmlUnit,这是我从未使用过的工具,因此为了测试它,我的第一个练习是检索网页的标题,因此我实现了以下代码:
@PostConstruct
public void init() throws Exception {
TimeZone.setDefault(TimeZone.getTimeZone("Europe/Madrid"));
getRequest.getPageName();
}
调用如下方法:
@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);
}
}
当我使用https://www.google.com 运行代码时,我得到了预期的响应“Google”,但是当我使用https://www.tripadvisor.com 或https://www.youtube.com 尝试它时,我得到一个我无法理解的错误:
Caused by: net.sourceforge.htmlunit.corejs.javascript.EvaluatorException: syntax error (https://static.tacdn.com/assets/DDGchX.17d9b05f.js#1)
我做了一个快速研究,看看这个问题是什么意思,我发现了一些关于类似案例的帖子,但我不明白是什么原因。它与Javascript问题有关吗?还是权限问题?
如果需要更多信息来分析问题,请不要犹豫,提前感谢任何读者花费的时间,如果我不尊重任何 StackOverflow 规则/协议,我们深表歉意。
【问题讨论】:
-
这能回答你的问题吗? HtmlUnit ignore JavaScript errors?
-
@tgdavies 不是真的,他们建议使用 client.getOptions().setThrowExceptionOnScriptError(false); 来抑制错误;但是当我使用它时,我不断收到相同的错误,并且它不会在任何地方打印网页名称。我现在很困惑,我应该切换到另一个爬取工具而不是 HtmlUnit 吗?
标签: javascript java web-crawler htmlunit