Работа со списками и файлами



  • Спасибо, но не сохраняет. Все данные были обработаны для bad в логе, а файлы good.txt или bad.txt не создаются.
    Конструкция if [[GOOD_URL]] == 0, мне нужно сохранить только одну url, если она не попадает под условия, а то будут дубли, если будет в циклу FOR.
    Чем отличается «Читать файл в список» и «Ресурс в список» ???
    Почему файлы не создаются - туда данные не записываются, а выводится в лог ошибка Все данные были обработаны для bad ?

    http://wiki.bablosoft.com/doku.php?id=ru:how_to_let_user_to_choose_output_file_name
    Добавить элемент, тоже не работает.



  • @myweb101 Я выше написал:

    На будущие, если ваш скрипт использует ресурсы, то добавляйте их тоже в сообщении.

    Прикладывай ресурсы.

    Что то я пропустил первый раз твой if.
    Конструкция if [[GOOD_URL]] == 0 означает, что в переменной [[GOOD_URL]] должен содержаться ноль 0. А у тебя в цикле, один раз увеличивается на 1 и всё.

    Ошибка Все данные были обработаны для bad появляется, потому что ты указываешь этот ресурс как путь до файла. А ресурс и есть этот файл, но он пустой.

    Используй экшен добавить элемент вместо запись в файл. Примерно вот так.



  • Еще раз спасибо, просто я убрал галку повторное использование у добавить в ресурс и поэтому не сохраняло.
    До цикла FOR устанавливаю переменную [[GOOD_URL]] равной = 0. Делаю цикл FOR по признакам, если совпало, то устанавливаю 1, после цикла проверяю, если переменная равна нулю, не увеличилась, то это значит в цикле FOR не было совпадений и значит , что url не подходит. А если вбивать в цикл FOR условие IF, то будет сохранять каждый раз и будут повторы. Для good url я тоже вынес в условие.

    0_1502182082563_GET_URL.xml



  • @myweb101 Пожалуйста. Только вот ресурсов от тебя я так и не увидел, даже тестовых.
    Я же тебе выше уже готовый скрипт скинул..

    У тебя условие проверки ([[HTML]]).indexOf([[URL_TARGET]]) >= 0 , берёт переменную [[HTML]] и ищет в её содержимом строку [[URL_TARGET]], всё хорошо, но вот дальше идёт больше или равно >= нулю.. То есть даже если строки [[URL_TARGET]] в переменной [[HTML]] даже и не пахнет, условие всё равно выполнится и ссылка засчитается хорошей.
    Так же вместо переменной [[COUNT]], которая считает количество итераций лучше использовать [[CYCLE_INDEX]], она для этого и предназначена.

    И ты не сказал в каком виде будешь использовать скрипт, в многопотоке или в один поток.



  • [[CYCLE_INDEX]]
    А я думал для чего данная переменная создается :)

    ([[HTML]]).indexOf([[URL_TARGET]]) >= 0
    

    Точно!
    Но
    http://community.bablosoft.com/topic/1018/несколько-вопросов-внимание-при-прочтение-может-возникнуть-рукалицо-из-за-ламерства-оных/14
    Я делал через конструктор.
    Я буду использовать скрипт во многопотоке.
    Тестовые данные, извини, проглядел.

    Содержимое urls

    https://community.bablosoft.com/topic/949/часто-задаваемые-вопросы
    https://community.bablosoft.com/topic/2250/премиум-поддержка
    https://community.bablosoft.com/topic/494/большое-количество-потоков-высокая-нагрузка
    https://community.bablosoft.com/topic/494/большое-количество-потоков-высокая-нагрузка/8
    https://community.bablosoft.com/topic/2453/работа-со-списками-и-файлами/7
    https://community.bablosoft.com/topic/2439/вызов-функций-через-ресурсы-и-переменные/9
    https://community.bablosoft.com/topic/2439/вызов-функций-через-ресурсы-и-переменные/13
    https://community.bablosoft.com/topic/2449/баг-в-логе-выполнился-html-код/15
    https://community.bablosoft.com/topic/2449/баг-в-логе-выполнился-html-код/16
    https://community.bablosoft.com/topic/2452/ввод-фразы-по-букве
    https://community.bablosoft.com/topic/2452/ввод-фразы-по-букве/6
    https://community.bablosoft.com/topic/2184/узнать-количество-потоков
    https://community.bablosoft.com/topic/2184/узнать-количество-потоков/5
    https://community.bablosoft.com/topic/2445/обработать-ошибки
    https://community.bablosoft.com/topic/2445/обработать-ошибки/4
    https://community.bablosoft.com/topic/2435/тормозит-скрипт-на-запросах/7
    https://community.bablosoft.com/topic/2451
    https://community.bablosoft.com/topic/2444/выполнить-произвольный-код-get-post-запрос/7
    https://community.bablosoft.com/topic/2447/как-работает-пропуск-кадров
    https://community.bablosoft.com/topic/2447/как-работает-пропуск-кадров/3
    https://community.bablosoft.com/topic/2448/не-могу-залить-видео-в-сообщество-на-facebook
    https://community.bablosoft.com/topic/2437/закрыть-браузер-вылетает
    https://community.bablosoft.com/topic/2437/закрыть-браузер-вылетает/5
    https://community.bablosoft.com/topic/2421/долго-думает-перед-вводом-текста
    https://community.bablosoft.com/topic/2421/долго-думает-перед-вводом-текста/3
    https://community.bablosoft.com/topic/2395/как-подружить-appium/7
    https://community.bablosoft.com/topic/2344/таймаут-во-время-выполнения-script-for-documentroot
    https://community.bablosoft.com/topic/2344/таймаут-во-время-выполнения-script-for-documentroot/4
    https://community.bablosoft.com/topic/2252/can-t-find-variable-_selector
    https://community.bablosoft.com/topic/2252/can-t-find-variable-_selector/24
    https://community.bablosoft.com/topic/1888/обработка-изображений-как-с-ней-работать
    https://community.bablosoft.com/topic/1888/обработка-изображений-как-с-ней-работать/7
    

    Содержимое target

    https://goo.gl/
    https://wiki.bablosoft.com/
    

    Цель, я хочу написать парсер активлинков, с проверкой robots.txt и допилить, чтобы определялась cms по признакам. Это форум - топик или блог или профиль - форума. Просто такой тулзы из адекватных нету.

    Проверку ссылки переделаю, через XPATH и надо будет проверять атрибут nofollow

    И еще пару вопросов:

    Ресурс - добавить элемент.
    Для чего эти галки?
    Добавить в файл/базу мгновенно - это немного понятно. Что сразу, а не по окончанию работы скрипта.
    Только добавить в файл/базу - а это?
    И
    Если стоит галка "Повторное использование" - в
    Ресурс - добавить элемент.
    В чем логика меняется? Или вообще без разницы, когда добавляешь элемент?

    И
    Файл с url лучше запихнуть в WHILE и брать по 0 строке с удалением, так меньше ресурсов машины тратиться?



  • Что-то я совсем запутался.
    Сделал простой скрипт,а меня программа вылетает. Если запустить многопоточно.

    Можете привести простой пример, где нужно брать значение из файла и удалять во многопотоке?

    Если в один поток данный скрипт запускать, то данные из файла не удаляются.
    Если использовать Foreach - , то же самое, не удаляет.
    Если ресурс numbers поставить notreuse в список - отключить Повторное использование галку, то вообще не берет значения.
    Брать новый ресурс или использовать старый при данном запросе ресурса. Вообще не понятно. Что это значит?

    1_1502208426893_list_numbers.txt

    0_1502208426892_example.xml



  • @myweb101 Не совсем понятно, для каких целей этот тестовый скрипт создавался.
    Первый же экшен ресурс в список, то есть ты взял данные из файла, создал в скрипте список и скопировал данные туда. Далее получаешь первый элемент из списка внутри скрипта, к ресурсу эти махинации не имеют ни какого отношения.
    Многопоток в этом случае бесполезен полностью, у тебя десять потоков совершают полностью одинаковые действия.

    Смотри, по факту, у тебя элементарные действия, которое производится за секунды, но запущено всё в 10 потоков и с количеством успешных выполнений 1000. Выходит за секунду у тебя в лог BAS'а вываливается 10 000 сообщений "Элемент-" и 10 000 сообщений "Количесто строк в файле", вот он и подвисает.

    Вот твой же скрипт и файл ресурса, которые работают как тебе было надо.



  • @Fox Что-то там пусто:(



  • @myweb101 Где. блин. пусто?
    0_1502219345571_forum52.png



  • Эм. Я спрашивал, как работать с файлом во многопотоке, многопоточно брать из файла значение и удалять. На каждый поток свое уникальное значение с удалением строки из файла. А тут добавляется ресурс и считается кол-во элементов.



  • @myweb101 Экшен лог имеет значение {{numbers|notreuse}} означает, что значение берётся из ресурса numbers, а notreuse означает, что каждый раз новое.
    У тебя в многопотоке, каждый поток пишет в лог только свою, уникальную строчку взятую из ресурса. Удаляя эту строчку из файла.

    Можете привести простой пример, где нужно брать значение из файла и удалять во многопотоке?



  • @Fox Спасибо еще раз большое! Такое простое действие, а сколько у меня и вас сил отняло. Просто очень сложно логику работы перенять.
    Я в принципе понял в чем я ошибался. Когда мы обращаемся {{numbers|notreuse}} то мы обращаемся напрямую к ресурсу - текстовому файлу. А когда мы добавляем ресурс в список, то мы создаем массив внутри потока и он никак не влияет на ресурс?


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.