Отключите все лишнее на целевой странице если она одна, это реально сделать - например скрипты всяких фейсбуков, сторонней аналитики и так далее. Обычно сервесы используют много сторонних скриптов, которые не влияют на работу сайта, но сильно нагружают проц.
Смотрите как идет распределение нагрузки - возможно оно не сплашное, а пиками - тогда можно попробовать запускать потоки более равномерно. Чтоб избегать этих пиков.
Чаще всего можно отрисовку снизить вплоть до 10 (ну 20) .... На загрузку проца, это как раз сильно влияет.
Если сервер свой и без видюхи, то стоит поставить в него видюху.
50 в нынешних условиях для баса с браузером, достаточно много. Можно попробовать разбить на несколько копий баса по 25 например.
Можно использовать рам диск для работы с профилями - но это уже продвинутый уровень.
Работа со списками и файлами
-
Здравствуйте. Пишу простой парсер и я совсем запутался с работой со списком и файлами.
Создаю 4 ресурса - "из файла":- urls - чтение и запись - список url
- target - только чтение - список признаков
- good - только запись - страницы которые содержат признак
- bad - только запись - страницы которые не содержат признак
Логика простая, создаю два списка list_urls и list_target , добавляю данные из ресурса.
Беру первую строку list_urls и удаляю. GET запрос.
Цикл FOR от 0 до кол-во list_target значений.
В цикле проверяю, беру строку и если есть значение - сохраняю в файл.Чем отличается - "Читать файл в список" от "Ресурс в список"???
Мне не понятно в документации
https://wiki.bablosoft.com/doku.php?id=ru:how_to_load_lines_from_file
Последовательность после создания ресурса ИЛИ или Затем
Нужно «Читать файл в список» ИЛИ (Затем) «Ресурс в список»
Какой смысл в этом сначала «Читать файл в список», потом «Ресурс в список»Даже, если я это делаю, я получаю undefined, если брать первую строку.
Но получается у меня так только, если создать список №1и добавить значение - ресурса., по другому, как в хелпе не получается.Далее, есть список №2 из 10 значений. Если создавать список и добавлять значения в список из ресурса, то не считает кол-во строк у списка, получает все время 1 шт. А вот если использовать ресурс в список, то считает.
Если я хочу сохранить удачную url в файл, то я указываю ресурс {{good|notreuse}} и значение, но я получаю ошибку
Все данные были обработаны для good. Что?! -
@myweb101 На будущие, если ваш скрипт использует ресурсы, то добавляйте их тоже в сообщении.
Первый же экшен у тебя создать список и первое значение в нём это весь ресурс {{urls}}. То есть список считает что у него всего одна запись, все твои url.
Список это по идее просто массив, если ты добавишь в него цифру 1, затем цифру 2, то в нём будет две записи, 1 и 2 соответственно. Но если ты добавишь сразу 1, 2, то в списке будет одна запись 1, 2. Хотя в инспекторе переменных и в том и в другом случае будет одинаковая запись.Ресурс в список используется, если у тебя проект работает в многопотоке и этот ресурс могут пополнять другие потоки.
Вот так так должно работать. Проверь с ресурсами.
-
Спасибо, но не сохраняет. Все данные были обработаны для 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 сообщений "Количесто строк в файле", вот он и подвисает.
Вот твой же скрипт и файл ресурса, которые работают как тебе было надо.
-
@myweb101 Экшен лог имеет значение
{{numbers|notreuse}}означает, что значение берётся из ресурсаnumbers, аnotreuseозначает, что каждый раз новое.
У тебя в многопотоке, каждый поток пишет в лог только свою, уникальную строчку взятую из ресурса. Удаляя эту строчку из файла.Можете привести простой пример, где нужно брать значение из файла и удалять во многопотоке?
-
@Fox Спасибо еще раз большое! Такое простое действие, а сколько у меня и вас сил отняло. Просто очень сложно логику работы перенять.
Я в принципе понял в чем я ошибался. Когда мы обращаемся {{numbers|notreuse}} то мы обращаемся напрямую к ресурсу - текстовому файлу. А когда мы добавляем ресурс в список, то мы создаем массив внутри потока и он никак не влияет на ресурс?
