Работа со списками и файлами
-
-
Спасибо, но не сохраняет. Все данные были обработаны для 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 я тоже вынес в условие.
-
@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 в список - отключить Повторное использование галку, то вообще не берет значения.
Брать новый ресурс или использовать старый при данном запросе ресурса. Вообще не понятно. Что это значит?
-
@myweb101 Не совсем понятно, для каких целей этот тестовый скрипт создавался.
Первый же экшен ресурс в список, то есть ты взял данные из файла, создал в скрипте список и скопировал данные туда. Далее получаешь первый элемент из списка внутри скрипта, к ресурсу эти махинации не имеют ни какого отношения.
Многопоток в этом случае бесполезен полностью, у тебя десять потоков совершают полностью одинаковые действия.Смотри, по факту, у тебя элементарные действия, которое производится за секунды, но запущено всё в 10 потоков и с количеством успешных выполнений 1000. Выходит за секунду у тебя в лог BAS'а вываливается 10 000 сообщений "Элемент-" и 10 000 сообщений "Количесто строк в файле", вот он и подвисает.
Вот твой же скрипт и файл ресурса, которые работают как тебе было надо.
-
@Fox Что-то там пусто:(
-
@myweb101 Где. блин. пусто?
-
Эм. Я спрашивал, как работать с файлом во многопотоке, многопоточно брать из файла значение и удалять. На каждый поток свое уникальное значение с удалением строки из файла. А тут добавляется ресурс и считается кол-во элементов.
-
@myweb101 Экшен лог имеет значение
{{numbers|notreuse}}
означает, что значение берётся из ресурсаnumbers
, аnotreuse
означает, что каждый раз новое.
У тебя в многопотоке, каждый поток пишет в лог только свою, уникальную строчку взятую из ресурса. Удаляя эту строчку из файла.Можете привести простой пример, где нужно брать значение из файла и удалять во многопотоке?
-
@Fox Спасибо еще раз большое! Такое простое действие, а сколько у меня и вас сил отняло. Просто очень сложно логику работы перенять.
Я в принципе понял в чем я ошибался. Когда мы обращаемся {{numbers|notreuse}} то мы обращаемся напрямую к ресурсу - текстовому файлу. А когда мы добавляем ресурс в список, то мы создаем массив внутри потока и он никак не влияет на ресурс?