Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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)