Распарсить страницу - затык

vlad00777
На сайте с 24.12.2009
Offline
119
730

Добрый день всем!

Пытаюсь распарсить страницу, но не выходит никак один момент. Это будет мой только второй парсер , поэтому сильно не пинайте.

Проблема такая:

Есть на сайте доноре такой код:

<span class="reg">
<img src="/images/rus.gif" alt="" class="ina">
<img src="/images/eur.gif" alt="" class="ina">
<img src="/images/usa.gif" alt="" class="ina">
<img src="/images/jap.gif" alt="">
</span>

Всегда выводится эти 4 картинки. У некоторых из них есть class="ina". Он может быть или может не быть :) Нужно распарсить так:

Если у картинки rus.gif есть class="ina" то ..., если нету класса, то ...

и т.д с этими четырьмя картинками. Действия для всех этих картинок будут разными.

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

Спасибо за помощь!

П.С. Парсер на PHP + CURL.

Верстка. Качественно! Адаптивная, резиновая, с параллаксом и прочими плюшками. В ЛС.
vandamme
На сайте с 30.11.2008
Offline
675
#1

вам написать полный код парсера?

vlad00777
На сайте с 24.12.2009
Offline
119
#2
vandamme:
вам написать полный код парсера?

Просто подсказать с помощью чего это можно сделать. Регулярку например подкиньте. Парсер писать не надо, сам напишу 😂

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#3

сначала через preg_match_all все картинки спарсите, а потом проверяйте через foreach:

if (preg_match('class'))

{}

else

{}

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
D
На сайте с 14.01.2007
Offline
153
#4

ну тогда покажите регулярку с которой у вас не получилось

vlad00777
На сайте с 24.12.2009
Offline
119
#5

LEOnidUKG, о Спасибо. Так в принципе и делал:

preg_match('/(rus.*class="ina">)/Uis', $result[0][$i], $rus);

Потом куда то понесло:

if (isset($rus[0]) and (strlen($rus[0])>0)) {} else {}

gormarket
На сайте с 29.12.2010
Offline
47
#6

Получаете текст

$text =' bla bla bla

<span class="reg">

<img src="/images/rus.gif" alt="" class="ina">

<img src="/images/eur.gif" alt="" class="ina">

<img src="/images/usa.gif" alt="" class="ina">

<img src="/images/jap.gif" alt="">

</span>

bla bla bla

';

и парсите его регулярным выражением

if(preg_match_all('#img src="(.*\.gif)"(?U).*(?-U)(?:( class="ina")|)>#im', $text, $found)){

//здесь либо выводите результат (чтоб посмотреть что получилось)

print '<pre>';

print_r($found);

print '</pre>';

//либо циклом проходитесь по массиву $found, чтоб выполнить действия в зависимости от его содержимого

}

Приведенное регулярное выражение не годится на все случаи жизни (можно сделать его более универсальным), но из приведенного текста получает следующее:

Array

(

[0] => Array

(

[0] => img src="/images/rus.gif" alt="" class="ina">

[1] => img src="/images/eur.gif" alt="" class="ina">

[2] => img src="/images/usa.gif" alt="" class="ina">

[3] => img src="/images/jap.gif" alt="">

)

[1] => Array

(

[0] => /images/rus.gif

[1] => /images/eur.gif

[2] => /images/usa.gif

[3] => /images/jap.gif

)

[2] => Array

(

[0] => class="ina"

[1] => class="ina"

[2] => class="ina"

[3] =>

)

)

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий