У меня был очень похожий опыт, но я остановился на другом решении.
Я тоже тестировал скрипт на 8 ядерном 32 гб дедике с широким каналом и там еле еле 10 потоков шло.
Работающими решением оказалось взять 32 ядерный локальный сервер с 64 оперативки, на не очень быстром канале, с сокс5, на нем 100+ потоков запускалось.
Скрипт тот же, никаких оптимизаций не делалось.
Стоит конечно побольше, чем аренда дедика но тут уж зависит от окупаемости твоей темы, стоит ли оно того или нет.
Но соксы могут быть узким местом, по возможности нужно делать свои соксы. Для этого, можно брать дешевые VPS и установить сокс через опенсурсный софт microsocks для линукса (в инете полно инструкций по установке, занимает не более 5 минут вручную, и можно установку через БАС автоматизировать также на случай если нужны сотни соксов).
Поиск по динамически подгружаемой странице
-
Добрый день. Есть сайт pinterest, делаю на нем поиск - подгружается страница с результатами, потом в цикле делаю 5 прокручиваний вниз, чтобы загрузилось больше элементов. И визуально видно, что их подгружается много но когда делаю итерацию по нужным элементам или GetElementsCount с необходимым мне селектором то выбирается намного меньше элементов чем есть. Такое ощущение, что вы выборку попадают только те элементы которые непосредственно отображены в видимой области браузера. Может такое быть?
-
@traffic-coon said in Поиск по динамически подгружаемой странице:
Добрый день. Есть сайт pinterest, делаю на нем поиск - подгружается страница с результатами, потом в цикле делаю 5 прокручиваний вниз, чтобы загрузилось больше элементов. И визуально видно, что их подгружается много но когда делаю итерацию по нужным элементам или GetElementsCount с необходимым мне селектором то выбирается намного меньше элементов чем есть. Такое ощущение, что вы выборку попадают только те элементы которые непосредственно отображены в видимой области браузера. Может такое быть?
Это называется виртуальный скрол, всё что находится вне видимого экрана уничтожается, что бы не нагружать браузер
-
@Fox Благодарствую. Это я уже отследил, что в DOM-е действиетльно содержится только то количество объектов которое примерно отображается на экране. Подскажите как поступить. Делать Scroll до конца страницы не вариант, когда вызываю этот метод то BAS все листает и листает, а пинтерест восе подкидывает и подкидывает пины, ждал не долго но за 10-15 секунд уже понятно, что оно либо в дедлуп вподет либо пролистнет бОльшую часть из того, что мне надо.
Вариант который придумал я это делать поиск, считывать элементы, делать скролл на высоту scrollView браузера ( не знаю как эта опция называется в BAS и не могу найти ) либо скролл на высоту браузера ( тоже не знаю как получить это значение внутри скрипта ). И так делать несколько итераций, пока не перестанут подгружаться уникальные данные.
Подскажите, как получить высоту браузера и можно ли вообще в BAS писать на чистом JavaScript с отладчиком? очень уж не интуитивный для меня визуальный редактор скриптов и думать в его паттернах очень трудно получается, гораздо проще закодить работу с DOM на JavaScript или C# или еще чем то...
-
@traffic-coon said in Поиск по динамически подгружаемой странице:
@Fox Благодарствую. Это я уже отследил, что в DOM-е действиетльно содержится только то количество объектов которое примерно отображается на экране. Подскажите как поступить. Делать Scroll до конца страницы не вариант, когда вызываю этот метод то BAS все листает и листает, а пинтерест восе подкидывает и подкидывает пины, ждал не долго но за 10-15 секунд уже понятно, что оно либо в дедлуп вподет либо пролистнет бОльшую часть из того, что мне надо.
Вариант который придумал я это делать поиск, считывать элементы, делать скролл на высоту scrollView браузера ( не знаю как эта опция называется в BAS и не могу найти ) либо скролл на высоту браузера ( тоже не знаю как получить это значение внутри скрипта ). И так делать несколько итераций, пока не перестанут подгружаться уникальные данные.
Попробуйте удалять элементы со страницы после парсинга, есть вероятность, что сайт будет помещать новые элементы в видимую зону автоматически.
Подскажите, как получить высоту браузера и можно ли вообще в BAS писать на чистом JavaScript с отладчиком? очень уж не интуитивный для меня визуальный редактор скриптов и думать в его паттернах очень трудно получается, гораздо проще закодить работу с DOM на JavaScript или C# или еще чем то...
Да, можно, действие "Яваскрипт" в модуле "Браузер"