В атрибуте много лишнего текста, как вытащить нужный?



  • Пытаюсь парсить картинку и тект из поста вконтакте.
    Вот что получается:

    Текст при указании селектора CSS "wall_post_text" парсится нормально, а с картинками при выборе селектора "page_post_sized_thumbs" с атрибутом "style" летит вся ерунда, которая в этом атрибуте есть: "width: 510px; height: 510px;background-image: url(https://sun1-4.userapi.com/c7005/v7005763/17753d/WPoLrSnY1B4.jpg);""
    Как же из атрибута STYLE вытащить чисто ссылку? Это делается с помощью регулярных выражений или как-то по другому?

    Вот содержимое поста:
    текст:

    <div class="wall_post_text">Покой — это когда тебя не тревожат лишние мысли. Когда ты не беспокоишься, что завтра может произойти то, чего тебе не хочется. Когда тебе не нужно идти туда, куда ты не хочешь. Когда то, что ты делаешь, — это и есть радость. Это когда ты перестаешь анализировать окружающий мир и понимаешь — он просто есть. И ты — просто часть него. И на этом все вопросы замолкают. И вот если этот покой внутри найден, то можно и другим дарить это спокойное, умиротворённое, радостное состояние своей души.</div>
    

    картинка:

    <div class="page_post_sized_thumbs clear_fix" style="width: 510px; height: 510px;"><a onclick="return showPhoto('-45378430_456252701', 'wall-45378430_15256', {"temp":{"base":"https://sun1-4.userapi.com/","x_":["c7005/v7005763/17753d/WPoLrSnY1B4",604,604],"y_":["https://sun1-21.userapi.com/c7005/v7005763/17753e/lK6k3tjyHfg",640,640]},queue:1}, event)" style="width: 510px; height: 510px;background-image: url(https://sun1-4.userapi.com/c7005/v7005763/17753d/WPoLrSnY1B4.jpg);" class="page_post_thumb_wrap image_cover page_post_thumb_last_column page_post_thumb_last_row"></a></div>
    

    alt text
    alt text



  • @bladder
    Regexp



  • А не подскажите почему регулярное выражение не срабатывает?

    alt text



  • @bladder said in В атрибуте много лишнего текста, как вытащить нужный?:

    А не подскажите почему регулярное выражение не срабатывает?

    Первое вхождение

    url\((.*)\)
    


  • @uraabk
    Спасибо, текст очистился от лишней требухи, но осталось слово url и скобки (). Чтоб убрать это нужно создать еще одно отдельное регулярное выражение?

    Сейчас ссылка выводится так:

    url(https://pp.userapi.com/c626419/v626419446/249c4/prk4SL2gSZg.jpg)
    

    А хотелось бы так:

    https://pp.userapi.com/c626419/v626419446/249c4/prk4SL2gSZg.jpg
    

    Я нашел такое решение:

    https://(.*)\);"\
    
    

    Для очистки этого текста :

    width: 510px; height: 510px;background-image: url(https://sun1-4.userapi.com/c7005/v7005763/17753d/WPoLrSnY1B4.jpg);" 
    

    В самом конструкторе он достает ссылку, но в BASе почему-то не хочет.


  • Banned

    @bladder said in В атрибуте много лишнего текста, как вытащить нужный?:

    width: 510px; height: 510px;background-image: url(https://sun1-4.userapi.com/c7005/v7005763/17753d/WPoLrSnY1B4.jpg);"

    Используй действие "извлечь все данные"

    url\((https://[\s\S]+)\);"\s
    


  • @freeliman

    В конструкторе срабатывает, но в BAse нет.

    alt text
    alt text



  • @bladder А если нажать на плюсик?



  • This post is deleted!


  • @tts9
    пустота

    alt text



  • @bladder said in В атрибуте много лишнего текста, как вытащить нужный?:

    Пытаюсь парсить картинку и тект из поста вконтакте.
    Вот что получается:

    Текст при указании селектора CSS "wall_post_text" парсится нормально, а с картинками при выборе селектора "page_post_sized_thumbs" с атрибутом "style" летит вся ерунда, которая в этом атрибуте есть: "width: 510px; height: 510px;background-image: url(https://sun1-4.userapi.com/c7005/v7005763/17753d/WPoLrSnY1B4.jpg);""
    Как же из атрибута STYLE вытащить чисто ссылку? Это делается с помощью регулярных выражений или как-то по другому?

    Вот содержимое поста:
    текст:

    <div class="wall_post_text">Покой — это когда тебя не тревожат лишние мысли. Когда ты не беспокоишься, что завтра может произойти то, чего тебе не хочется. Когда тебе не нужно идти туда, куда ты не хочешь. Когда то, что ты делаешь, — это и есть радость. Это когда ты перестаешь анализировать окружающий мир и понимаешь — он просто есть. И ты — просто часть него. И на этом все вопросы замолкают. И вот если этот покой внутри найден, то можно и другим дарить это спокойное, умиротворённое, радостное состояние своей души.</div>
    

    картинка:

    <div class="page_post_sized_thumbs clear_fix" style="width: 510px; height: 510px;"><a onclick="return showPhoto('-45378430_456252701', 'wall-45378430_15256', {"temp":{"base":"https://sun1-4.userapi.com/","x_":["c7005/v7005763/17753d/WPoLrSnY1B4",604,604],"y_":["https://sun1-21.userapi.com/c7005/v7005763/17753e/lK6k3tjyHfg",640,640]},queue:1}, event)" style="width: 510px; height: 510px;background-image: url(https://sun1-4.userapi.com/c7005/v7005763/17753d/WPoLrSnY1B4.jpg);" class="page_post_thumb_wrap image_cover page_post_thumb_last_column page_post_thumb_last_row"></a></div>
    

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


    Вам подойдёт даже такая простая регулярка:

    url\((.*?)\)
    

    Действие "первое вхождение"

    0_1554137194680_1c663801-fb29-4788-b185-6090737cdf0c-изображение.png

    Вот тестовый скрипт


    @freeliman said in В атрибуте много лишнего текста, как вытащить нужный?:

    @bladder said in В атрибуте много лишнего текста, как вытащить нужный?:

    width: 510px; height: 510px;background-image: url(https://sun1-4.userapi.com/c7005/v7005763/17753d/WPoLrSnY1B4.jpg);"

    Используй действие "извлечь все данные"

    url\((https://[\s\S]+)\);"\s
    

    Действие "извлечь все данные" возвращает список и если найдётся больше одного совпадения, то последующее использование этой переменной как строки, вызовет ошибку.



  • @fox

    Все сработало, спасибо, оказывается результат был в переменной GROUP1, а не ALL_MATCH.


Log in to reply