На них, в основном, есть ссылки на основном, большом сайте, но до его парсинга пока я не добрался. Решил поработать брутфорсом.
Нумерация не сквозная, то есть 3782796.jpg есть, а 3782795.jpg и 3782797.jpg может не быть.
в лоб попробовал сделать примерно следующее:
from grab import Grab numstart = 3000000 numend = 4000000 g = Grab() for i in xrange(numstart, numend): url = prefix + str(i)+'.jpg' g.setup(method = 'HEAD') g.go(url) if g.response.code == 200: print i, 'we are lucky' else: continue
Суть в чем - при запуске этого безобразия “в лоб”, скорость работы составляет примерно 4-5 запросов в секунду, а значит, перебор всех представленных выше вариантов займет примерно 2.5 суток. Долгонько.
Разделил диапазон на 10 других, по 100 тыс. урлов, сделал батник (я на винде):
start python leech.py 3000000 start python leech.py 3100000 start python leech.py 3200000 ... start python leech.py 3900000
Внимание, вопрос. Как бы это безобразие переписать в эффективное асинхронное (?) мультипоточное(?) дело с блэкджеком и обработчиками?
Пока что я только пишу результаты (валидные УРЛы) в файл, а потом же еще и сами файлы захочется скачать….
Очевидно, надо в сторону Grab::Spider, но что-то не сварить мне пока его в голове.
Может кто-нибудь “прототип” написать? Или я хочу чего-то, что и так в доках описано?