1

我正在开发一个项目,我的应用程序托管在 Google App Engine 上并使用 Jsoup html 解析库。在我的应用程序中,我将 TaskQueues 与默认 queueu 一起使用,该队列中的唯一任务是连接到 URL 并开始解析页面。日志文件中没有出现错误或警告,它只是退出,因为它没有看到 Jsoup 解析文档的行。这是我的代码片段:

log.warning("Before connection");
Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
log.warning("After connection");

TaskQueue 工作正常,我已经测试过,我 100% 确定它没有问题。我尝试手动连接到网页并下载它,然后将其传递给 Jsoup 并开始在那里解析,连接工作正常并且网页已成功下载,但 Jsoup 无法执行任何操作。我最大的问题是日志文件中没有错误和警告;所以我不知道这是怎么回事。

4

2 回答 2

1

问题是我使用的 Jsoup 1.7.2 显然与 Google App Engine 不太兼容。我切换回 Jsoup 1.7.1 并解决了问题。

于 2013-07-01T17:45:03.987 回答
0

应用引擎限制了许多类,我假设 Jsoup.connect(url) 或 .parse 方法依赖于这些受限类之一并引发异常。

为了消除 Jsoup.connect 导致问题的机会,我建议您使用App Engine URL Fetch在 URL处获取页面的字符串,然后使用:

Document doc = Jsoup.parse(htmlString);

但是,如果解析存在问题,那么您确实需要使错误/日志记录正常工作,并且这里没有太多信息可以提出建议。尝试将有问题的代码放在 try-catch 块中,看看是否可以捕获异常。

另外尝试更高版本的 GAE SDK(1.8.1 是当前版本)。我之前曾与 GAE SDK 的 checkRestricted 方法发生冲突,该方法会干扰 Jsoup,因此 1.7.5 可能就是这种情况。

于 2013-06-24T15:47:40.210 回答