我创建了一个基本的 GWT (Google Web Toolkit) Ajax 应用程序,现在我正在尝试为读取页面的爬虫创建快照。
我使用 HtmlUnit 创建了一个 Servlet 来响应爬虫。
当我在浏览器上时,我的应用程序运行良好。但是在 HtmlUnit 中,它会引发很多关于我在 HTML 中的特殊字符的错误。但是这些字符是内容,我不想用特殊代码替换它,一旦它当前工作,只是因为 HtmlUnit。(至少我应该先检查一下我是否正确使用了 HtmlUnit)
我认为 HtmlUnit 应该读取页面的字符集信息并将其呈现为浏览器,一旦它是我认为的项目目标。
我还没有找到关于这个问题的好信息。这是 HtmlUnit 限制吗?我是否需要更改我网站的所有内容才能使用这个 java 库来拍摄快照?
这是我的代码:
if ((queryString != null) && (queryString.contains("_escaped_fragment_"))) {
// ok its the crawler
// rewrite the URL back to the original #! version
// remember to unescape any %XX characters
url = URLDecoder.decode(url, "UTF-8");
String ajaxURL = url.replace("?_escaped_fragment_=", "#!");
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_24);
HtmlPage page = webClient.getPage(ajaxURL);
// important! Give the headless browser enough time to execute JavaScript
// The exact time to wait may depend on your application.
webClient.waitForBackgroundJavaScript(3000);
// return the snapshot
response.getWriter().write(page.asXml());