def base_spider(target_fname): """ Danger: Узел записывается поверх, а не добавляется, временные файлы затираются Хорошо бы вообще очистить временную папку. Пусть целевой файл паука создает все заново. Пока все """ rpt = [] target_generator = parser_target_for_spider(target_fname) for at in target_generator: # TODO(zaqwes): Не очень эфф. но что если обработка распр? А как быть с конф. # файлом если нужно запустить распределенно? Наверное лучше вынести path = 'App/Spider/intermedia_storage' tmp_dir_path = get_app_cfg_by_path(path) if not tmp_dir_path: rpt.append("Error: Params app no found - "+path) return rpt node_name, url, file_idx, params = at[0] # Строем папку path_to_node = _do_tmp_node_folder(node_name, tmp_dir_path) # Можно заполнять контентом text_content = extracte_text(url, params) # Пишем во временный файл tmp_fname = path_to_node+'/tmp'+str(file_idx)+'.txt' _save_temp_file(tmp_fname, text_content) return rpt
def Init(): rpt = [] path = 'App/Spider/to_text_convertors' list_names_processors = get_app_cfg_by_path(path) for at in list_names_processors: if at in _std_convertors_map: g_convertors_map[at] = _std_convertors_map[at] elif at in g_custom_convertors_map: g_convertors_map[at] = g_custom_convertors_map[at] else: rpt.append("Error: Name not registred - "+at) return rpt
def check_crawler_target(target): rpt = [] # Проверяем задание # Разрешенные расширения path_to_settings = "App/Spider extractor/auto_detected_extention" auto_processed_ext = tools.get_app_cfg_by_path(path_to_settings) target_ext = target[kKeyTargetExts] for ext in target_ext: if ext not in auto_processed_ext: rpt.append('File with this extention not automatically processed - *.'+ext) rpt.append(' Extention removed. If need then convert file to '+ '/'.join(auto_processed_ext)) target_ext.remove(ext) # Доствпность корней roots = target[kKeyRoot] for diro in roots: if not os.path.exists(diro): roots.remove(diro) rpt.append('Root dir no found - '+diro+'. Path removed from target.') # Доствпность игнорируемых папок ignored = target[kKeyIgnoredDir] for diro in ignored: if not os.path.exists(diro): ignored.remove(diro) rpt.append('Ignored dir no found - '+diro+'. Path removed from target.') for diro in ignored: # игнорируемый путь должен исходит из одного из корней content = False for root in roots: if root in diro: content = True if not content: rpt.append('Ignored dir int root path - '+diro+'. Path removed from target.') ignored.remove(diro) return rpt
def main(): # Инициализируем паука path = 'App/Spider/targets_folder' kSpiderTargetsPath = tools.get_app_cfg_by_path(path) # Запускаем паука # Проверяем файл целей target_name = kSpiderTargetsPath+'iron_man_aa_target.txt' parse_file_rpt = [] for at in parser_target_for_spider(target_name): result, err_code, rpt = at if rpt: parse_file_rpt.append(rpt) print at[0] if parse_file_rpt: # Есть замечания print 'Rpt Parse file:' map(printer, parse_file_rpt) if not run_other(): return # Базовая проверка целостности задания all_right, rpt = check_availabel_resourses(target_name) if not all_right: print 'Rpt Checking pathes:' map(printer, rpt) if not run_other(): return # TODO(zaqwes): сделать отчет по преобразованию rpt = Init() if rpt: print 'Rpt init convertors:' map(printer, rpt) rpt = base_spider(target_name) map(printer, rpt)