Архив

Полезные регулярные выражения (regexp). Часть 2

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

1. Получаем ссылку на видео с вставки ютуб. Видео имеет обычно такой вид:

<iframe src="https://www.youtube.com/embed/xxxxxxxx" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

Где xxxxxxxx код видео. Чтобы его получить используем:

<iframe[^<>]*?src=['"]([^<>]*?)['"]

Получаем 1 группу. В результате получим https://www.youtube.com/embed/xxxxxxxx

Если на странице не один тег iframe тогда подойдет такой код

<iframe[^<>]*?src=['"]([^<>]*?youtu[^<>]*?)['"]

 

2. Универсальный способ получить основную картинку для статьи или товара

Заключается в том, что многие современные сайты используют метатег og:image для задания картинки, которая будет показана, если ссылку на страницу добавят в соцсеть. Полностью метатег выглядит так:

<meta property="og:image" content="http://site.com/images/image.jpg"/>

Чтобы убедится, что картинка есть, проверьте исходный код страницы. Проще всего это сделать в вашем браузере, комбинацией Ctrl+U или просмотрев в селекторе.

Чтобы получить картинку используем:

<meta[^<>]*?og:image['"][^<>]*?content=['"]([^<>]*?)['"]

Получаем 1 группу. В результате получим http://site.com/images/image.jpg

 

3. Получаем url товара для следующего занесения в наш интеренет-магазин

При парсинге товаров часто нужно и собрать url именно товара без сайта и категорий. Например

http://site.com/shop/category/product-01

Нам нужно получить “product-01”. Для этого устанавливаем в Датакол “Тип поля” – “Спец поле”. И далее во вкладке “Спец значения” – “URL” (оно уже будет выбрано по умолчанию).

И добавляем одну замену:

.*?/ - > пусто

Если в урл есть завершающий слеш “/” тогда делаем 2 замены:

/$ -> пусто
.*?/ - > пусто

 

4. Удаляем стили, классы в HTML тегах
Эта регулярка может помочь Вам при сохранении описания, где зачастую нужно сохранить теги, но вот часто в них присутствуют не нужные нам стили или классы. Чтобы их убрать используем следующие примеры:

<([a-z\d]{1,6})\ [^<>]*?> -> <$1>

Это универсальный метод, но будьте оторожны почистит все что внутри. Если нужно чистить какойто конкретный тег, тогда так:

<div[^<>]*?> -> <div>

 

Нужна доработка или готовое решение?

Опишите задачу — отвечу в течение дня и назову сроки и стоимость.

Комментарии: 11

  1. Здравствуйте. А как мне вытащить из ссылки числовое значение атрибута mod_id в таблицу Exel если ссылка Чехол для iphone 5/5s/SE Лев с кольцом (красный)
    Мне нужно вот это значение: 136262220

  2. С НАСТУПАЮЩИМ ВСЕХ!
    Для экспорта картинок в БД необходим формат имени вида id_имяКартинки, где id это инкремент новой записи в БД. В Datacol предусмотрена возможность генерировать имена картинок, но оперировать можно только со значениями полей парсинга. А надо получить результат mysql запроса к своей БД. Может это можно реализовать плагином?

    1. А зачем Вам это? При импорте в БД инкремент сам увеличивается на +1. Вы просто не указываете его при импорте, он сам должен увеличиваться.

      1. Логика CMS устроена таким образом, что при добавлении в БД нового объявления, картинки добавляются в другую таблицу с префиксом ххх_имякартинки, где ххх это ID самого объявления, к которой картинки и относятся. Т.е. при экспорте картинки напрямую на сайт я уже должен знать max(id), чтобы дать изображению правильное имя (дописать ххх_)

      2. Я себе представляю себе это так: результаты парсинга перед отправкой обрабатываются плагином (или динамическим плагином), который запрашивает max(id), прибавляет +1, переименовывает изображения и выгружает результат на сайт, т.е. загружает файлы по FTP и вносит записи в БД. Скрипт записи в БД я написал, а вот в C# несилён, хотя знаю, что с mySQL он работает.

        1. Вам лучше напрямую обратиться к разработчикам или знающим C#. Моих познания тут наврядли хватит )

  3. А как преобразовывать ссылку при сборе ссылки, чтобы в конце добавляло неоходимое окончание
    sayt.com/category/tovar-0016
    на
    sayt.com/category/tovar-0016/haracter

    Cпасибо

    1. В вашем случае думаю лучше использовать замены при загрузке. Т.е вы по регулярке находите вашу ссылку или ее часть и делаете замену.

      1. Спасибо за ответ, но я так ничего и не понял.
        Где это и как сделать?
        Логику понимаю, что $ и на /haracter, но как это вбить в преобработку базовой ссылки?

Оставить комментарий