/// <summary> /// 爬取搜尋頁面 /// </summary> /// <returns></returns> private bool CrawlSearchPages() { _todoItemService.DeleteExistedTodoItems(); // 檢查上次是否有爬到一半的待辦項目 var todoItems = _todoItemService.GetAll(); if (!todoItems.Any()) { SearchKeywords(); // 取得搜尋頁面所有項目 var itemIds = _searchService.GetAllItemNames(); // 加入尚未處理的項目到待辦項目佇列中 _todoItemService.AddTodoItems(itemIds.Select(x => new TodoItem { ItemId = x }).ToList()); // 取得可處理的待辦項目 todoItems = _todoItemService.GetAll(); // 搜尋頁面已處理完則結束 if (!todoItems.Any()) { return(false); } } foreach (var todoItem in todoItems) { try { // 爬取新的履歷項目 var userWithItem = _itemService.GetUserWithItem(todoItem.ItemId); using (var ts = new TransactionScope()) { if (userWithItem != null) { _userService.AddUserWithItem(userWithItem); } _todoItemService.Remove(todoItem); ts.Complete(); } } catch (Exception ex) { _logger.LogError(30001, ex, $"TodoItem {todoItem.ItemId} Exception."); } } return(true); }