парсинг сайта на предмет изображений

Author Message
Дмитрий 03/05/2016 12:52 pm
Возможно ли не скачивать сам сайт, а лишь изображения, что есть на нем? Давать изображением имена, как в url страницы сайта, где эти изображения лежали (либо имена id такой страницы (topic.php?=43624363 - имя 43624363_001.jpg, 43624363_002.jpg...). Если на странице есть внешние ссылки на изображения, то скачивание оных с такого внешнего url.
Oleg Chernavin 03/05/2016 04:34 pm
Да, это возможно. Фильтры Файлов - Текст - в поле Расположение разрешить скачивание с начального сайта.

Надо отключить все секции Фильтров Файлов - и оставить только секцию Изображения. Изображения - Расположение - согласно Фильтрам URL.

В Фильтрах URL разрешить только изображения того вида, которые надо сохранить, чтобы исключить всякие сервисные картинки.

В секции Обработка - кнопка Замена URL. Добавить правило:

URL:
*
Replace:
/*.jpg
With:
/{:reffilename}.jpg
Apply To:
Filenames.

Правило надо будет несколько изменить в соответствии с реальным адресом изображений. Может дать мне пример точного адреса, я помогу.

Best regards,
Oleg Chernavin
MP Staff
Дмитрий 03/06/2016 03:08 am
Олег. Как пример: http://rutracker.org/forum/viewtopic.php?t=4664700
На ней, в посте раздачи есть спойлера со скриншотами-миниатюрками. Не прибегая к клику по миниатюрке, что бы открылся фастпик, нужно утянуть оригинальные изображения с фастпика.
Пробовал через php скрипт, но пока не получается там https://www.linux.org.ru/forum/development/12409776
Голова трещит, как встроить подфункцию для сайтов-последователей целевого урл (в том примере, целевой url = rutracker. последователь - fastpic). fastpic не указывается, ибо при конвеерном скачивании (выбор целевого юрл по маске же и трусами замахаешься все время указывать разных последователей). На ЛОРе почему-то не поняли вопрос, хотя вроде и так и так объяснил суть.
Дмитрий 03/06/2016 05:14 am
[quote]/{:reffilename}.jpg[/quote]
Нужен какой-то регексп, что бы, если на странице несколько изображений, к имени добавлялась какая-то цифра. А то такая регулярка заикает первую попавшуюся картинку и другие качать не может, ибо имя уже занято.
Dmitry 03/06/2016 05:22 am
Цифра со символом там "_". То есть, если несколько картинок на топике viewtopic.php?t=3561, то картинки отнумеруются, как 3561_0.jpg, 3561_2.jpg итц. В справку полез, что к программе. там только замены, а вот такой конкатенации символов нет.
Oleg Chernavin 03/06/2016 05:22 am
Тут будет сложно с переименованием, я думаю. Тем более, что не одна картинка на странице.

Насчет утягивания изображений, это не сложно. Фильтры Файлов - Текст - Загружать согласно Фильтрам URL. Фильтры URL - Сервер - разрешить со всех.

Каталоги - разрешить:

http://rutracker.org/forum/*
http://fastpic.ru/view/*

Я думаю, так должно сработать.

Олег
Dmitry 03/06/2016 05:39 am
В php такой кусок рисуется, как $n.
$n = 0;
..
file_put_contents("{$topic}_{$n}.{$ext}", file_get_contents($img));
..
Dmitry 03/06/2016 05:47 am
>Насчет утягивания изображений, это не сложно. Фильтры Файлов - Текст - Загружать согласно Фильтрам URL. Фильтры URL - Сервер - разрешить со всех.

Программка скачивает первое попавшееся изображения из зона страницы и все. Другие она не качает. При перезапуске закачки, с предварительным удалением предыдущих файлов, что бы было все видно, вижу то 1 картинку, то 2. В следующий раз наоборот. Какая первая дернется.
без хвостовой нумерации затык, видать.
Oleg Chernavin 03/06/2016 05:58 am
А если убрать Замену URL, чтобы без этих переименований, все картинки скачаются?

Олег
Dmitry 03/06/2016 06:01 am
Да. Скачаются все. Сядут в свою фастпики урл и там будут жить. все :)
Была мысль хоть как-то переименовывать сами файлы, а доменный урл оставлять. чтоб не в http складывались. Но!!! в нешнем каталоге на фастпике их то же может быть несколько. В одном и том же. Поентому, не вариант такой обход.
Dmitry 03/06/2016 06:03 am
Нужен именно хвост с оператором нумерации. наверное.
Oleg Chernavin 03/06/2016 06:18 am
Я подумаю. Пока нормальныъ идей нет, как это реализовать.

Можно сделать поддержку полноценных скриптов, но этим очень редко будут пользоваться. Проще программу написать, которая на диске после закачки будет манипуляции делать.

Олег
Dmitry 03/06/2016 06:32 am
Непонятно, почему не активируется белый список разрешенных урл. Я думал, если туда забить хотя бы один урл с маской, то все остальное будет запрещено и запрещать уже ничего не нужно.
Фильтры url>сервер>разрешенные.
Забил туда фастпик, но блин. качается все подряд, если разрешен выход на внешние урл. Я уже предположил, что галку "загружать до fx ссылок с других серверов". Типа, раз поле разрешенных не деактивируется, то типа вот оно счастье - ан нет. Тогда ссылки внешние и разрешенные не грузятся.
То ли в черном списке нужно поставить мего-маску на все. Но кто тогда будет в приоритете - черные с общей маской единственной "*", то ли белые. Попробовал - все равно все грузится.
Dmitry 03/06/2016 06:38 am
А! Все!
Разобрался.
галка для черных. без галки для белых. просто маску не верно вбил в белых адресах.
Dmitry 03/06/2016 07:01 am
Ан нет. Если в юрл проекта будет не статический адрес типа http://rutracker.org/forum/viewtopic.php?t=4664700 , а http://rutracker.org/forum/viewtopic.php?t={:3561..3569}, то хрен прога будет бегать по внешним ссылкам, если уровень=0. А нужно, что бы скачались страницы только лишь с 3561 по 3569 и никаких соседей + картинки с внешних ресурсов, относящиеся к этим страницам. Если выставить 0 уровень, то скачаются лишь страницы html. Никакие внешние файлы не скачаются, пока вместо http://rutracker.org/forum/viewtopic.php?t={:3561..3569} не выставишь просто http://rutracker.org/forum/viewtopic.php?t=3561. И это при одинаковых условиях уровней (уровень 0) и белых списков в разрешенных url.
Dmitry 03/06/2016 07:14 am
Пожалуйста, удалите 4 последних сообщения, включая это. Допустил ошибку.
Oleg Chernavin 03/06/2016 03:11 pm
Ну можно уровень=1 сделать и разрешить только по маске с fastpic скачивать.

Олег
Dmitry 03/12/2016 09:30 am
А можно как-то добавлять номер id к уже именованным файлам?
Вы тут пример давали, но почему-то не получается его воспроизвести: http://forum.ru-board.com/topic.cgi?forum=5&topic=34346&start=1140#12
Dmitry 03/12/2016 02:30 pm
Олег. Создал такую тему: https://www.linux.org.ru/forum/general/12423618
Только вопрос - а поймет ли oe "на лету", что первого файла нет в каталоге, в который он его сбрасывал с закачки, и можно класть следующий с таким же именем.
Oleg Chernavin 03/12/2016 02:39 pm
Да, ОЕ поймет, что файла нет, и заново скачает файл, если нужно.

Добавка ID - пока такого нет. Можно попробовать сделать несколько правил подряд, чтобы последовательно применились к одному адресу. Но сложно.

Олег
Dmitry 03/12/2016 06:36 pm
"Фильтры Файлов - Текст - в поле Расположение разрешить скачивание с начального сайта."
Эдак прога не вылезет за пределы домена, чей урл у нее вбит в основных настройках. разве нет?
Dmitry 03/12/2016 06:57 pm
И там еще момент вилами на воде для меня.
В настройках проекта программы есть такая опция, как Проект>уровень>числовое значение.
На какие объекты распространяется эта опция? К примеру, необходимо, что бы в реферер url скачивались объекты не ниже и не выше указанного url, если говорить про такой url. И по глубине, равной 2, на внешних url.
Простой пример:
Есть некая http://stranica/na/opredelennom/saite02131.html и в ней есть ссылки, ведущие как на внутренние (реферер) url, так и на внешние. На странице есть ссылки на некоторые изображения, находящиеся на внешних url. Это могут быть как встроенные (<img...) объекты, ведущие на внешние ресурсы (но их программа скачает и при глубине, равно 0), так и на внешние ресурсы (a href=http://ext.url.jpg.html). Жить на внутреннем ресурсе такие картинки могут, как миниатюрки, ведущие на оригиналы.
Есть также настройка фильтры url>сервер, где можно указать белые внешние url, убрав галочку "загружать файлы только с начального".
Подгружаются изображения, которые находятся лишь в теге <img>http://ext.url.jpg</img>
Если же увеличить глубину, то подгрузятся все изображения, что указаны в a href=http://ext.url.jpg.html(>http://ext.url.jpg), но тогда и соседние страницы реферер ресурса то же начнут подгружаться, что недопустимо. Таких url может вырасти во много раз больше, чем целевых, если брать в расчет массив в хвосте url.

Возможно ли выставить разнородную глубину? Для внутренних ресурсов = 0. Для внешних 2 etc. ?
Oleg Chernavin 03/12/2016 06:59 pm
Насчет Фильтров - ну да, я так понял, нужно скачивать с начального сервера. А вот картинки уже брать с других. Получается, Текст (страницы) ограничиваем сервером. А Изображения - регулируем ключевыми словами в Фильтрах URL.
Oleg Chernavin 03/12/2016 07:02 pm
Теги картинок считаются за один и тот-же уровень, что и страница. А вот теги ссылок (даже если они ведут на изображение), считаются за следующий уровень.

Можно использовать разные уровни. Например, поставим 0 - т.е. только начальная страница. А В Фильтрах URL - Сервер - загружать до 2 внешних ссылок.

Олег
Dmitry 03/12/2016 07:02 pm
Ничего не скачивается, чего нет в исходных url, в <img></img>, если в тексте (опции) ходить не фильтрами, а идти только с начального сайта.
Dmitry 03/12/2016 07:03 pm
Ничего не скачивается, чего нет в исходных url, в <img></img>, если в тексте (опции) ходить не фильтрами, а идти только с начального сайта.
Oleg Chernavin 03/12/2016 07:04 pm
Мне нужен пример конкретный, чтобы понять.
Dmitry 03/12/2016 07:09 pm
Пример сегодня не выложу. нужен vpn для рутрекера. сейчас нет. Есть другой ресурс, но он не хороший.
Но все это логично. штимы не грузятся с внешних url, ибо стоят не в фильтрах, а "загружать с начального сайта". с чего они будут грузиться-то.
Dmitry 03/12/2016 07:12 pm
если выставить другой уровень в основных настройках (проект>уровень), то это будет то же глухим номером.
Ну а подвергнуть фильтрам штимы то же не выйдет. регексп автозамены начнет хватать любые штимы, в пути которых значится значение ".jpg". tratata.jpg.html etc. уже пробовал.