как парсить по атрибуту?

вопросы и ответы по использованию PHP
Ответить
Аватара пользователя
ттбрть
Сообщения: 36
Зарегистрирован: 19 дек 2019, 08:08
Откуда: хохляндия

как парсить по атрибуту?

Сообщение ттбрть » 11 сен 2020, 05:59

как получить значение onclick? sendNewMessage(6759205)

<a href="#" onclick="sendNewMessage(6759210);return false;"><i class="ico i-msg"></i>Отправить сообщение</a>
<a href="#" onclick="sendNewMessage(6759205);return false;"><i class="ico i-msg"></i>Отправить сообщение</a>

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: как парсить по атрибуту?

Сообщение Support » 12 сен 2020, 01:23

Можно так:
// получить все ссылки с onclick=sendNewMessage
$anchs = $anchor->get_all_by_attribute("onclick","sendNewMessage", false);

// для всех полученных ссылок делаем вывод
foreach($anchs as $anch)
{
  $onck= $anch->get_attribute("onclick");
  // убираем не нежное
  $onck = explode(";",$onck);
  // выводим результат
  echo $onck[0]."<br>";
}

Аватара пользователя
ттбрть
Сообщения: 36
Зарегистрирован: 19 дек 2019, 08:08
Откуда: хохляндия

Re: как парсить по атрибуту?

Сообщение ттбрть » 27 ноя 2020, 13:44

<p class="MessageText_text__mT2rO ">Привет</p>
<p class="MessageText_text__mT2rO ">Пока</p>
а как вот в таком примере получить текст?
понимаю только что начать нужно с
$anchs = $anchor->get_all_by_attribute("Class", "MessageText_text__mT2rO", false);
а вот че дальше с этим делать не пидумал)

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: как парсить по атрибуту?

Сообщение Support » 27 ноя 2020, 22:18

ттбрть писал(а):
27 ноя 2020, 13:44
<p class="MessageText_text__mT2rO ">Привет</p>
<p class="MessageText_text__mT2rO ">Пока</p>
а как вот в таком примере получить текст?
понимаю только что начать нужно с
$anchs = $anchor->get_all_by_attribute("Class", "MessageText_text__mT2rO", false);
а вот че дальше с этим делать не пидумал)
Для получения текстов ссылок можно сразу использовать общую для всех объектов функцию get_all_inner_texts_by_attribute

Аватара пользователя
ттбрть
Сообщения: 36
Зарегистрирован: 19 дек 2019, 08:08
Откуда: хохляндия

Re: как парсить по атрибуту?

Сообщение ттбрть » 28 ноя 2020, 12:26

да так уже пробывал но решил что сделал что то не верно ибо при выполнении такого скрипта:

Код: Выделить всё

echo $p->get_inner_text_by_attribute("Class", "MessageText_text__mT2rO", false);echo"<br>";
$arr = $anchor->get_all_inner_texts_by_attribute("class", "MessageText_text__mT2rO", false);
print_r($arr);
получаю:
привет)
Array
(
)


примеры на полигоне работают верно видимо проблема в сайте где работаю
но всё же хотелось бы сделать чтоб парсило не только первое сообщение
Есть варианты решения проблемы?

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: как парсить по атрибуту?

Сообщение Support » 28 ноя 2020, 18:09

ттбрть писал(а):
28 ноя 2020, 12:26
да так уже пробывал но решил что сделал что то не верно ибо при выполнении такого скрипта:

Код: Выделить всё

echo $p->get_inner_text_by_attribute("Class", "MessageText_text__mT2rO", false);echo"<br>";
$arr = $anchor->get_all_inner_texts_by_attribute("class", "MessageText_text__mT2rO", false);
print_r($arr);
получаю:
привет)
Array
(
)


примеры на полигоне работают верно видимо проблема в сайте где работаю
но всё же хотелось бы сделать чтоб парсило не только первое сообщение
Есть варианты решения проблемы?
Странно должно находить раз первая строчка работает.

единственное отличие вижу в коде с название class. Попробуйте так:
$arr = $anchor->get_all_inner_texts_by_attribute("Сlass", "MessageText_text__mT2rO", false);
print_r($arr);

Если не получиться, скиньте ссылку на страницу в лс, посмотрим у себя в чём там хитрость.

Аватара пользователя
ттбрть
Сообщения: 36
Зарегистрирован: 19 дек 2019, 08:08
Откуда: хохляндия

Re: как парсить по атрибуту?

Сообщение ттбрть » 28 ноя 2020, 19:25

:oops: решил проблему методом тыка:oops:
$p->get_all_inner_texts_by_attribute("class", "MessageText_text__mT2rO ", false);

не знаю в чем различие $anchor и $p но замена помогла
как я понял если в html строчка начинается с <p нужно использывать $p

извиняюсь за беспокойство :lol:

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: как парсить по атрибуту?

Сообщение Support » 28 ноя 2020, 22:40

ттбрть писал(а):
28 ноя 2020, 19:25
:oops: решил проблему методом тыка:oops:
$p->get_all_inner_texts_by_attribute("class", "MessageText_text__mT2rO ", false);

не знаю в чем различие $anchor и $p но замена помогла
как я понял если в html строчка начинается с <p нужно использывать $p

извиняюсь за беспокойство :lol:
да да ))) не заметил объекты то разные. p отвечает за тэг <p>, а anchor за тэг <a>. Поэтому если в коде используется тэг <p>, то и использовать надо объект $p.

Ответить