сделать запрос асинхронно?
т.е. запустить запрос в отдельном потоке, а основной продолжит свой алгоритм не дожидаясь
Дорос до многопоточного парсинга.
Но не знаю, как он работает.
У меня есть скрипт, который парсит странички сайта example.com.
Странички имеют такой адрес:
example.com/1
example.com/2
...
example.com/10000
Я создал массив с цифрами от 1 до 10 000 (чтобы перебрать все странички с 1ой по 10 000ую).
Скрипт берёт первый элемент массива (1), собирает адрес странички, загружает страничку, парсит данные, записывает в файл.
Затем срипт берёт второй элемент массива (2) и делает аналогичные действия.
Вопросы:
Я так понял, что каждый поток должен взять определённый диапазон адресов страничек (например с 1 по 500, с 501 по 1000 и т.д.) и распарсить его. Но как потоки поймут, что:
Если url отличается только числом, то можно получить у каждого потока [[THREAD_INDEX]] в "Статистика скрипта".
Далее можно запустить цикл через For и чтобы каждый поток брал свои страницы, то нужно все это умножать на [[THREAD_INDEX]]
Как вариант установить границы для цикла For
от
([[THREAD_INDEX]]-1)*10000+1
до
[[THREAD_INDEX]]*10000
При данной логике каждый поток будет обрабатывать по 10000 вариантов
Также можно вручную поделить диапазоны и расписать их в txt файле и "Парсить строку"
0;100000
100001;200000
200001;300000
и т.д

И чтобы лучше разобраться, то нужно посмотреть видео
@tet-vivi said in Как сделать многопоточный парсинг (объясните простыми словами, пожалуйста):
@GameBot из-за разницы выполнения некоторые потоки будут простаивать вконце
Чтобы этого избежать можно тупо взять и загнать в файл с 1 до последнего нужного нам id. Далее создать ресурс из файла.
Единственная проблема: что делать если требуется спарсить более миллиона страниц?
использовать бд.
можно пачками получать набор ид которые еще не обработаны.
опробовано на практике.(~15 миллионов ид/страниц)
можно на асинхронных функциях в цикле.
текущий N и запуск новых M. и при интеграции N = N + M.
Чтобы этого избежать можно тупо взять и загнать в файл с 1 до последнего нужного нам id. Далее создать ресурс из файла.
если не критично, можно исключить работу с файлом. А сразу создать ресурс и загнать туда набор ид.