Серверный парсер текст. запросов (PHP Python и тд)
Есть буржуйский сайт типа овертюры, который выдает результаты в виде заархивированного файла. ссылка на скачивание высылается на мыло.
Должен быть файл опций, файл списка запросов, в результате - текстовый файл результатов
Парсинг должен быть прогрессивный, т.е. результаты запроса подставляются в поиск снова и снова пока не кончатся результаты или не надоест ждать.
предполагаемый алгоритм:
1. Раздублить и если нужно разбить файл списка запросов на несколько (в опциях - размер блока запросов) и поместить в папку Requests. если последний файл меньше целого блока то перенести его в подпапку requests/small
2. зайти по ссылке одновременно через несколько прокси (если указано "использовать прокси" и список прокси не пуст и в правильном формате, в настройках - кол-во потоков) подождав время рандомно выбранное из интервала в настройках
3. ввести в поле запрос из текущего списка невыполненных запросов, поставить флаг адалт-опции (если так указано в настройках)
4. нажать search
5. ввести в другое поле рандомный e-mail моего почтового домена (на сервере стоит catch all на один адрес), нажать Send e-mail
6. повторить начиная с п.2 пока не кончатся запросы в очередном списке запросов
7. зайти на мыло, собрать со всех писем ссылки для скачивания, удалить все письма
8. скачать по всем ссылкам из п.6 все файлы в подпапку TEMP
9. распаковать все файлы, удалить архивы
10. Выдернуть из названий файлов исходные запросы и записать их в промежуточный файл успешных запросов.
11. почистить распакованные файлы (удалить несколько строк в начале и конце).
12. Объединить в один текстовый промежуточный файл результатов, удалить исходные файлы.
13. Удалить дубли из промежуточного файла результатов
14. пополнить файл (если первый раз то создать) выполненых запросов списком из промежуточного файла успешных запросов
15. очистить текущий файл запросов от содержащихся в промежуточном файле успешных запросов. если остался пустой - удалить, если не уменьшился оставить как есть, если уменьшился и не пустой перенести в подпапку requests/small
16. удалить промежуточный файл успешных запросов
17. скопировать промежуточный файл результатов. копию почистить (каждую строчку от последней запятой и цифр после нее), после почистить копию от запросов, содержащихся в файле выполненных запросов и в файлах невыполненных запросов.
18. составить из очищенной копии файлы блоков запросов. последний маленький - в папку requests/small. удалить очищенную копию
19. если в папке requests/small суммарное кол-во запросов во всех файлах не меньше блока запросов
то объединить их, разбить на целые блоки и остаток, целые перенести в папку requests в начало очереди.
20. если папка requests пуста то объединить все файлы из requests/small и переместить объединенный файл в requests
21. добавить промежуточный файл результатов к общему файлу результатов. удалить промежуточный файл.
22. повторить с п.2 пока папка requests не окажется пустой.
Скрипт должен работать быстро, поэтому возможно вместо записи файлов лучше использовать оперативную память. Какие-то процессы можно делать парралельно.
Скрипт должен быть как можно более "непотопляемым", чтобы работать в автономном режиме, т.е. не вылетать при возникновении каких-либо проблем, а пробовать сначала "пройти другим путем", а в крайнем случае возвращаться в последнее исходное состояние и снова и снова пытаться.
Адрес сайта в личку. Пишите ваши предложения.