我正在开发一个项目,我的应用程序托管在Google App Engine上并使用Jsoup html解析库。在我的应用程序中,我正在使用具有默认队列的TaskQueues,该队列中唯一的任务是连接到URL并开始解析页面。日志文件中不会出现任何错误或警告,它只是退出,因为它没有看到解析文档的Jsoup行。以下是我的代码片段:
log.warning("Before connection");
Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
log.warning("After connection");
TaskQueue工作正常,我已经测试过,我100%确定没有问题。 我试图手动连接到网页并下载它然后将其传递给Jsoup并开始解析它,连接工作正常并且网页已成功下载,但Jsoup无法做任何事情。 我最大的问题是日志文件中没有错误和警告;所以我不知道它到底发生了什么。
答案 0 :(得分:0)
App引擎限制了许多类,我认为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可能就是这种情况。
答案 1 :(得分:0)
问题是我使用的是Jsoup 1.7.2,它显然与Google App Engine不太兼容。我切换回Jsoup 1.7.1并解决了问题。