ページリンクをキューに入れる必要があるこの問題がありますTaskQueue
:
Queue queue = QueueFactory.getDefaultQueue();
for (String href : hrefs){
href = baseUrl + href;
pageLinks = pageLinks + "\n" + href;
queue.add(TaskOptions.Builder
.withUrl("/crawler")
.param("url", href));
l("Added to queue url=["+href+"]");
}
?
ここでの問題は、キューに渡される URLにアラビア文字のが含まれていると思います。再スケジュールが続くので。
ただし、StringpageLinks
は Spring MVC を介してブラウザーに出力され、アラビア文字が表示されていることを正しく確認できます。だから私はかなりリンクが大丈夫です。
ブラウザに出力されたリンクの 1 つをコピーしてブラウザの URL に貼り付けると、正常に動作します。したがって、間違った URL を取得するためにキューが再スケジュールされ続ける理由はかなり確信しています。
ここで何が欠けているのでしょうか? String href
をキューに渡す前に変換する必要がありますか?
クロール サービスは次のようになります。
@RequestMapping(method = RequestMethod.GET, value = "/crawl",
produces = "application/json; charset=iso-8859-6")
public @ResponseBody String crawl(HttpServletRequest req, HttpServletResponse res,
@RequestParam(value="url", required = false) String url) {
l("Processs url:" + url);
}
@QueryParam
また、ここで文字列をアラビア語に変換する必要がありurl
ますか?