Парсинг картинок из статьи

Тема в разделе "Скачивание картинок и файлов", создана пользователем rapsody, 2 дек 2014.

  1. rapsody

    rapsody New Member Пользователи

    Регистрация:
    26 ноя 2014
    Сообщения:
    11
    Друзья, добрый вечер.

    Подскажите пожалуйста решение такого вопроса.

    Есть статья, которую нужно спарсить. В ней 5 картинок.

    Мне нужно первую картинку, назначить превьюшкой для своей статьи, а остальные 4 оставить в коде статьи.

    Сейчас проблем вытащить первую картинку для превьюшки нет. Проблема, в том, как удалить из текста статьи первую картинку, чтобы в теле статьи осталось только 4?
     
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Задача у вас очень специфичная и узконаправленная. Поэтому вырезку первой картинки нужно решить на уровне подключаемого PHP-скрипта (который вырежет картинку из текста и вернет обработанный текст) Ссылки недоступны для гостей

    С уважением к вам, Сергей.
     
  3. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Вот смотрите несколько функций PHP для работы со строками
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    Вот посмотрите, как использовать PHP-скрипты на локальном сервере
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
     
  4. rapsody

    rapsody New Member Пользователи

    Регистрация:
    26 ноя 2014
    Сообщения:
    11
    Уважаемый Root. Странно конечно, что задача специфичная. По сути это что-то типа: [DELTAGS:img] - 1 раз.

    Т.е. выполнить макрос удаления тега img - 1 раз.


    Может я как то не правильно до этого объяснил...

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

    <sape_index><p style="text-align: justify;"><img class="alignleft size-full wp-image-710" title="" src="http://****/12/****.jpg" alt="" width="300" height="290" />Тут пошел текст статьи


    Вот мне нужно по сути, спартить текст статьи после этой картинки
     
    Последнее редактирование: 2 дек 2014
  5. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Если нужно просто удалить из текста какую-то подстроку, то почему бы вам не воспользоваться регулярным выражением (re:) Ссылки недоступны для гостей в функции поиск-замены.
     
  6. rapsody

    rapsody New Member Пользователи

    Регистрация:
    26 ноя 2014
    Сообщения:
    11
    Но тогда он удалит и другие картинки? Можно ли запилить re: на выполнение до первого вхождения?
     
  7. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Да, однозначно можно. Я в регулярных выражениях пока не разбирался. Подождем ответа господина Kagorec.
     
  8. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    В дополнительных настройках границ в поле поиск-замена, добавим метку только для первой каринки:
    1. при условии что отключена очистка htmtotxt, ставим метку для первой картинки
    Код:
    re:^(.*?)<img|$1<del1><img
    2. далее тут (или оставить чтоб в шаблоне вывода потом удалить REPLACE макросом) же второй строкой можно удалить эту первую картинку
    Код:
    <del1><img{skip}>|
     
    Последнее редактирование: 3 дек 2014
  9. rapsody

    rapsody New Member Пользователи

    Регистрация:
    26 ноя 2014
    Сообщения:
    11
    Kagorec, спасибо!

    Все работает. Не мог бы ты подробнее разжевать синтакис написанного?
     
  10. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    Про регулярные выражения подробно описано с примерами в справке - Ссылки недоступны для гостей
    Код:
    re: - указывает в программе что после этого будет использовано регулярное выражение
    ^ - начало кода/текста
    (.*?) - все что угодно нежадно, указывающее от и до (в нашем случае от старта и до тега img), для .*? скобки указывают чтоб уместило совпадение в массив $1
     
  11. rapsody

    rapsody New Member Пользователи

    Регистрация:
    26 ноя 2014
    Сообщения:
    11
    Спасибо большое еще раз.

    Если разрешите, спрошу прямо здесь. Пытаюсь загрузить картинку по адресу:
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    Не получается её зацепить ни [CSVIMAGES(img)], ни <DOWNLOADFILE>

    В логах, про картинку все нормально, а справа, под списком урлов висит пустой квадратик, вместо картинки, с надписью "Не загружена".

    Причем если скачивать через <DOWNLOADFILE> то он скачивает целиком html страницу, с превью картинки, а не большую картинку, как она открывается в браузере при переходе по ссылки. Хедеры для этого макроса, как было указанно в одной из тем, я прописал.
     
    Последнее редактирование модератором: 4 дек 2014
  12. rapsody

    rapsody New Member Пользователи

    Регистрация:
    26 ноя 2014
    Сообщения:
    11
    Друзья, перечитал все темы, но нигде этот вопрос не обсуждался, кроме одной темы, где посоветовали использовать <DOWNLOADFILE>, но результат не известен.

    Я уже по всякому пытал спарсить картинку, и менял хедеры, и поставлял куки, бесполезно. Что интересно, если в браузере открыть ссылку, то открывается картинка, но если перезагрузить страницу, например Ctrl-R, то открывается предпросмотр картинки, в формате страницы html. Вот именно эту страницу <DOWNLOADFILE> почему то и сохраняет.

    Кроме того, картинки с таким адресом, содержатся и в тексте статьи, и обрабатывать их отдельно никак не получиться. Нужно что-то придумать, чтобы он налету их сохранял.
     
    Последнее редактирование: 4 дек 2014
  13. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Меню - настройка - настройка макросов - DOWNLOADFILE -> в поле custom headers вставить:
     

    Вложения:

  14. rapsody

    rapsody New Member Пользователи

    Регистрация:
    26 ноя 2014
    Сообщения:
    11
    Root, таким образом она скачивается, а если в статье, несколько таких картинок, и мне нужно чтобы они оставались в том же месте статьи. Я парсю статью, в CSV, без всяких обработок.

    К тому же, при парсинге картинки через DOWNLOADFILE, у меня почему, то не сохраняется исходное название файла, хотя галочку "префикс имен файлов" я снял.
     
  15. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Макрос [DFN] для задания имен файлов
     
  16. rapsody

    rapsody New Member Пользователи

    Регистрация:
    26 ноя 2014
    Сообщения:
    11
    Спасибо, с этим уже разобрался, думал, он автоматически сохранит исходное имя файла, что было бы логически, делать по умолчанию, если не задан опред. шаблон.

    А вот что все таки делать, если в статье, несколько таких картинок, и мне нужно чтобы они оставались в том же месте статьи.
     
  17. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Согласен, логически может и да, но нет там функционала такого, он даже не умеет удалять расширение, если его руками не удалять.
    Не совсем ясно с чего надо брать картинки, но вообще хватает просто указать макросом IMAGEPATH куда сохранять картинки, и путь меняется. должен меняться.
     
  18. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    Теоритически, в "дополнительные настройки границ" задать замену всем тегам картинок <img src="ulr-na-kartinku"> замену на выкачивание DOWNLOADFILE макросом.
    Пробуйте так:
    PHP:
    re:<img([^><]+)src="([^><"]+)"|<img$1src="<DOWNLOADFILE>$2</DOWNLOADFILE>"
    re:<img([^><]+)src='([^><']+)'|<img$1src="
    <DOWNLOADFILE>$2</DOWNLOADFILE>"
    П.С. отпишите подошло-ли
     
  19. rapsody

    rapsody New Member Пользователи

    Регистрация:
    26 ноя 2014
    Сообщения:
    11
    Ребята, спасибо, подошло. Теперь будет тема, с окончательным решением данного вопроса, для поиска.
     
  20. vit1812

    vit1812 New Member Пользователи

    Регистрация:
    28 июл 2017
    Сообщения:
    5
    Город:
    Санкт-Петербург
    Подскажите, при при совместном использовании макросов DOWNLOADFILE и GETMORECONTENT (беру ссылку на сторонний сайт) получаю такое
    лог DOWNLOADFILE:
    (Ссылки недоступны для гостей):
    ------тут почему то добавляется Ссылки недоступны для гостей адрес страницы откуда я беру ссылку и конечно в ответ получаю 404, а при использовании макроса <NIMG> все получается отлично, но это немного не то, мне нужно присваивать имена картинкам, а это можно сделать только макросом DOWNLOADFILE. Как бы мне это решить?
     

    Вложения:

    • new_abb_com.cdp
      Размер файла:
      34,5 КБ
      Просмотров:
      1

Поделиться этой страницей