Try using "Template" action and construct your text with hyerlinks than paste it to page.
Other option is to create simple LOCAL html page somewhere on your hard disk with
desired text and links, than open that local html page in another tab in BAS and than copy
from that tab to the tab where you are working.
Многопоточность | Проект в проекте
-
Здравствуйте. Очень нужна помощь разработчика или Users, кто уже конкретно в теме. Нужен алгоритм создания шаба.
ТЗ такое - делаю парсер выдачи сразу нескольких поисковиков 4 поисковика
парсится выдача страниц за 24 часа по 5ти ключевым фразам - это в среднем 3-7 страниц - возьмем для примера 5 - а это 4Х5Х5=100 страниц на выдаче - 1000 адресов сайтов - пусть даже минус повторы - пусть это даже 100 сайтов для обработки и анализа. Дальше идет переход на по спаршеной ссылке сайтов и сбор всех ссылок с главной и ссылок с адрес сайта/sitemap.xml и сбор данных регуляркой с сохранением в файл..Вопрос - как реализовать работу шаблона - чтобы он запускался в многопотоке - сразу по 4ем поисковикам с ипользованием сразу 5ти поисковых враз - то есть сразу запускалось 20 потоков, а после сбора страниц допустим в 50 потоков - возможно ли такое вообще реализовать - и если да то в каком направлении двигаться - если нет - то как бы проще реализовать - Заморочка вся в скорости обработки больших массивов данных.
Да, и что это можно реализовать подключив внешний ресурсы один из которых сожержит 4 строки с сылкой на поисковики и второй содержащий поисковые запросы - это понятно - непонятно, как например использовать и какой тип ресурса, чтобы не подключать внешние текстовые файлы с данными с которых будет с удалением браться строки - а чтобы эти данные хранились внутри проекта - в переменной(ых) или что-то подобное...
-
@Turutur
Варианты следующие:- Делаешь парсер для каждого поисковика - потом в этом же скрипте парсер сайта.
На выходе получаешь - допустим у тебя 5 запросов, запускаем 5 потоков под каждый запрос. Каждый поток получает из выдачи 50-70 сайтов, и сразу же потом парсит эти сайты. - Отдельно парсеры для каждого поисковика, отдельно парсер сайтов. Плюс в том что в парсере сайтов сможешь задать больше потоков.
- Самый сложный, но правильный. Все в одном. В одном скрипте все поисковики разделены по функциям, в каждом потоке работает своя функция(поисковик) с каждым запросом (как ты и хотел). Но реализовать тяжело, нужно правильно настроить ресурсы что бы каждый поток использовал свою функцию, а каждая функция - нужные запросы.
И отдельной функцией в этом же скрипте парсер сайтов
- Делаешь парсер для каждого поисковика - потом в этом же скрипте парсер сайта.
-
@DrPrime Спасибо
Бля..блин вот я заморочился - короче понял - это проблема моего больного воображения) - просто всегда хочется сделать мощный шаб и чтобы был в полной сборке - без запуска дополнительных шаблонов - а то начинается потом инструкции делать, что и как работает- потом сам путаешься) -
@Cruzel said in Многопоточность | Проект в проекте:
парсить с помощью запросов, тогда можно и сразу по 5 поисковикам.
Можно подробнее - это как? с помощью запросов?
С вкладками не получиться - выполнение скрипта идет линейно - можно функции настроить и переменные - но там венигрет получается такой, что путаться начинаешь
-
@Turutur Вашу задумку можно легко реализовать с помощью такого скрипта.
Описание
В начале работы приложения(функция OnApplicationStart) создаем ресурс, туда записываем поисковые движки.
Еще один ресурс создаем для сайтов.Алгоритм работы потока такой - если в первом ресурсе еще остались поисковые движки работаем с ними, если нет - работаем с сайтами.
Для удобства можно разбить работу с поисковыми ресурсами и сайтами на 2 функции. -
@support пожалуйста сделайте еще один пример проекта в проекте - пример, который был предоставлен Выше скорее всего не применим.
Здесь же кстати небольшая просьба - функция OnnAplicationStart - сделайте ее отображение среди прочих функций и действий скрипта - так как она идет первой по умолчанию и вызывать ее не нужно - пусть отображается, чтобы ее было видно. И не совсем понятно как именно она работает.
- с неее начинается скрипт и она срабатывает первой всегда в независимости от места ее создания?
- если используется несколько потоков - то она срабатывает только в одном потоке?
Дайте пожалуйста развернутый ответ, возможно с примерами где и как может использоваться.
И так к теме - нужна помощь в алгоритме создания следующего шаблона -
например скрипт будет работать в 10 потоков - задача такая - на входе есть 10 аккаунтов -
вначале идет парсинг строки с аккаунтом - авторизация и сбор данных - а уже затем подключаются все имеющиеся аккаунты для обработки данных -как такое реализовать?
-
с неее начинается скрипт и она срабатывает первой всегда в независимости от места ее создания?
Да, и ее не нужно вызывать.
если используется несколько потоков - то она срабатывает только в одном потоке?
Да.
Дайте пожалуйста развернутый ответ, возможно с примерами где и как может использоваться.
Создать ресурс, инициализировать глобальные переменные, очистить папки с временными данными, другими словами сделать все то, что нужно делать только один раз и только в начале работы приложения.
как такое реализовать?
Тоже самое, что в примере выше. Только вместо сайтов - аккаунты и сайты не заполняются вручную в OnAplicationStart а берутся из файла.
Еще раз повторю алгоритм.
Есть 2 функции - для обработки аккаунтов и для обработки данных полученных первой функцией.Если ресурс аккаунты не пуст - вызывается первая функция.
Если ресурс аккаунты пуст - вызывается вторая функция. -
@support вот подошел к концу второй день - как я пытался переварить информацию которую Вы дали - создать скрипт с одним акком не возникает проблем - но сделать проект в проекте не получается никак - не смог понять предоставленный алгоритм - что-то не срастается - проект не выкладываю и не прошу готовый - так как реально хочу научиться и разобраться! Попробую более детально расписать.
делаю приглашалку в группы одноклассниковвходные - есть список аккаунтов
ссылка на группу куда будем приглашать
ключевая фраза для поиска групп доноровOnApplicationStart[[алгоритм: парсим первый аккаунт - авторизуемся - проверяем авторизацию - вводим ключ в поиск - выставляем выдачу - группы - открытые - искать по тегам - прокрутка 3 раза - парсим группы на выдаче в список]]
<!-- с этого должен начинать работу скрипт - в один поток, по завершении этой функции - начинается сбор данных - в максимальное количество потоков -->
Далее идет обработка и сбор данных - хочу сделать так - парсим строку с аккаунтом - авторизуемся - проверяем авторизацию - берем строку из списка с группами - переходим на страницу пользователей - прокуручиваем 3 раза - парсим пользователей - добавляем в список all_members - по завершению удаляем дубликаты - берем первого пользователя - переходим на страницу - приглашаем в группу.
В один поток все реально нормально работает - как сделать так, чтобы после того какотработала функция OnApplicationStart - то есть одним аккаунтом был получен список групп доноров - чтобы скрипт начинал работать в максимальное количество потоков равное количеству имеющихся аккаунтов в файле????
Как это сделать??? Люди - кто в теме - у кого что было похожее? Гениев типа "можно выполнить код" - просьба не тратить время - ищу способ выполнения стандартными методами BAS. То есть в начале один поток - потом по максимуму!
-
@Turutur могу толькл прежположить, но попробуй в конце выполнения первой функции создать глобальную переменную, и задать ей какое то значение, а уже в начале скрипта поставь цикл forreach, который будет работать до тех пор, пока переменная не будет равна заданному параметру. Получается так, ты запускаешь n-ое количество потоков, но по факту они все сначала будут ждать пока первая функция закончит свою работу, а только потом начнут выполнять заданный далее скрипт. По поводу количества по ов, как ни крути, нужно будет выставлять вручную.
-
@DrPrime - ) спасибо - не сосвсем понял - но буду разбираться - я немогу понять как сделать переход именно на многопоток - так как я использую файл с аккаунтами для авторизауции и OnApplicationStart для старта и сбора, но когда в начале срабатывает OnApplicationStart - он содержит действие авторизации - соответственно - после можно сделать выход - или использовать разные аки для 1 для сбора - а остальные для обработки - но используя действие парсить строку и авторизоваться после OnApplicationStart - в многопотоке не выходит - все равно один поток работает и минус 1 аккаунт - то же не хотелось бы). Плохо, что в BAS нет возможности визуально строить скрипт как в Зенке - простым перетягиванием нужных блоков и действий