Форум об интернет-маркетинге
Вернуться   Форум об интернет-маркетинге > Технические вопросы > Веб-строительство

Ответ
 
Опции темы
Старый 03.01.2022, 02:06   #31
seokotov
se ксенофоб
Доцент
 
Аватар для seokotov
 
Регистрация: 14.07.2020
Адрес: Севастополь, Россия
Сообщений: 173
Сказал(а) спасибо: 127
Получил(а) "Спасибо": 33
Нарушения: 0/0 (0)
Репутация: 28076

Thread Starter Re: снова я сосвоим парсингом

а бывает ли такое чудо чтобы вырезать последний абзац?
ну то есть последний тег <p></p> и его содержимое?
seokotov вне форума   Ответить с цитированием
Старый 03.01.2022, 05:13   #32
anadonam
JusT CompL
Профессор
 
Аватар для anadonam
 
Регистрация: 22.06.2020
Адрес: тут я живу
Сообщений: 648
Сказал(а) спасибо: 52
Получил(а) "Спасибо": 274
Нарушения: 0/0 (0)
Репутация: 290657
Отправить сообщение для anadonam с помощью ICQ

По умолчанию Re: снова я сосвоим парсингом

seokotov, да.
самый простой вариант кратко:
- вырезаешь все
- суешь в переменную
- находишь в "ней" последний ( ....)
- и ...
anadonam вне форума   Ответить с цитированием
Старый 03.01.2022, 12:19   #33
seokotov
se ксенофоб
Доцент
 
Аватар для seokotov
 
Регистрация: 14.07.2020
Адрес: Севастополь, Россия
Сообщений: 173
Сказал(а) спасибо: 127
Получил(а) "Спасибо": 33
Нарушения: 0/0 (0)
Репутация: 28076

Thread Starter Re: снова я сосвоим парсингом

Цитата:
Сообщение от anadonam Посмотреть сообщение
seokotov, да.
самый простой вариант кратко:
- вырезаешь все
- суешь в переменную
- находишь в "ней" последний ( ....)
- и ...
у меня это уже вот так выглядит
Код:
@INLINE {$news_content | preg_replace : '(<div([\S\s]*?)</div>|</div>|<a([\S\s]*?)</a>)iu'}
надо еще как то последний абзац выжечь
seokotov вне форума   Ответить с цитированием
Старый 03.01.2022, 14:09   #34
XPraptor
Думаю, что надо худеть
Академик
 
Аватар для XPraptor
 
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 541251

По умолчанию Re: снова я сосвоим парсингом

Цитата:
Сообщение от seokotov Посмотреть сообщение
а бывает ли такое чудо чтобы вырезать последний абзац?
ну то есть последний тег <p></p> и его содержимое?
Тут надо смотреть на реальный код.
У тебя этот последний абзац p он внутри div-ов? (дивы-то удаляются у тебя полностью).
Если нет, то используй отрицание поиска, вот так будет:
Код:
'%<p(?!.*<p).*|<div([\S\s]*?)</div>|</div>|<a([\S\s]*?)</a>%siu'
И не обрамляй никогда шаблон скобками - парсер окуеет и ты вместе с ним на сложных шаблонах.
Только знаками процента или слэшами.

И обрати внимание на ключи - добавлен s - это воспринимает весь текст как одну строку, уже без разделений на новые строки (иначе отрицание сложным будет если так не сделать).

В принципе ты можешь записать и так:
Код:
'%<p(?![\S\s]*<p)[\S\s]*|<div([\S\s]*?)</div>|</div>|<a([\S\s]*?)</a>%iu'
Но обработка будет в 7-12 раз медленнее, если у тебя не частый вызов (не 50-100 раз в секунду), то в принципе тогда можно и так без ключа s, а с ним иногда можешь просто тупить и не понимать, почему перевод строки не находит
Состояние бота google и полезные ресурсы: всё про гугл
XPraptor вне форума   Ответить с цитированием
Сказали спасибо:
Старый 03.01.2022, 14:33   #35
anadonam
JusT CompL
Профессор
 
Аватар для anadonam
 
Регистрация: 22.06.2020
Адрес: тут я живу
Сообщений: 648
Сказал(а) спасибо: 52
Получил(а) "Спасибо": 274
Нарушения: 0/0 (0)
Репутация: 290657
Отправить сообщение для anadonam с помощью ICQ

По умолчанию Re: снова я сосвоим парсингом

seokotov, ты точно не засланый козачок с форума программистов ?
Цитата:
Сообщение от seokotov Посмотреть сообщение
надо еще как то последний абзац выжечь
- там элементарно всё решается, чтобы спрашивать.
// при своём на то желании. и вариантов куча
anadonam вне форума   Ответить с цитированием
Старый 03.01.2022, 20:06   #36
seokotov
se ксенофоб
Доцент
 
Аватар для seokotov
 
Регистрация: 14.07.2020
Адрес: Севастополь, Россия
Сообщений: 173
Сказал(а) спасибо: 127
Получил(а) "Спасибо": 33
Нарушения: 0/0 (0)
Репутация: 28076

Thread Starter Re: снова я сосвоим парсингом

Цитата:
Сообщение от XPraptor Посмотреть сообщение
Тут надо смотреть на реальный код.
У тебя этот последний абзац p он внутри div-ов? (дивы-то удаляются у тебя полностью).
Если нет, то используй отрицание поиска, вот так будет:
Код:
'%<p(?!.*<p).*|<div([\S\s]*?)</div>|</div>|<a([\S\s]*?)</a>%siu'
И не обрамляй никогда шаблон скобками - парсер окуеет и ты вместе с ним на сложных шаблонах.
Только знаками процента или слэшами.

И обрати внимание на ключи - добавлен s - это воспринимает весь текст как одну строку, уже без разделений на новые строки (иначе отрицание сложным будет если так не сделать).

В принципе ты можешь записать и так:
Код:
'%<p(?![\S\s]*<p)[\S\s]*|<div([\S\s]*?)</div>|</div>|<a([\S\s]*?)</a>%iu'
Но обработка будет в 7-12 раз медленнее, если у тебя не частый вызов (не 50-100 раз в секунду), то в принципе тогда можно и так без ключа s, а с ним иногда можешь просто тупить и не понимать, почему перевод строки не находит
картина тут с абзацами такая
дивы в конце отпадают и так, а вот в концеполучается два абзаца один пустой и один который надо почикать
Код:
....
<p>абзац который надо удалить</p>
<p></p>
<div class="1"></div>
<div class="1"></div>
а синтаксис у парсера такой просто по документации, он тупой и капризный

по скорости и частоте запросов не так много...раз в 6 часов выборку из 10 ресурсов гребет
seokotov вне форума   Ответить с цитированием
Старый 04.01.2022, 01:52   #37
oleg_ws
На серче с 01.11.2011
Аспирант
 
Регистрация: 02.07.2020
Сообщений: 68
Сказал(а) спасибо: 186
Получил(а) "Спасибо": 56
Нарушения: 0/0 (0)
Репутация: 2613

По умолчанию Re: снова я сосвоим парсингом

Вот так не получается?

$html = new DOMDocument();
$html->loadHTML($content);
$iframe = $html->getElementsByTagName('iframe');
$iframe->getAttribute('src');
oleg_ws вне форума   Ответить с цитированием
Старый 04.01.2022, 15:10   #38
XPraptor
Думаю, что надо худеть
Академик
 
Аватар для XPraptor
 
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 541251

По умолчанию Re: снова я сосвоим парсингом

Цитата:
Сообщение от seokotov Посмотреть сообщение
картина тут с абзацами такая
Ну тогда мой пример выше такую структуру должен обработать нормально.
XPraptor вне форума   Ответить с цитированием
Сказали спасибо:
Старый 04.01.2022, 19:24   #39
seokotov
se ксенофоб
Доцент
 
Аватар для seokotov
 
Регистрация: 14.07.2020
Адрес: Севастополь, Россия
Сообщений: 173
Сказал(а) спасибо: 127
Получил(а) "Спасибо": 33
Нарушения: 0/0 (0)
Репутация: 28076

Thread Starter Re: снова я сосвоим парсингом

Цитата:
Сообщение от XPraptor Посмотреть сообщение
Ну тогда мой пример выше такую структуру должен обработать нормально.
хм, это как это он удалит пустой абзац и предпоследний а все остальные не удалит?
seokotov вне форума   Ответить с цитированием
Старый 06.01.2022, 11:42   #40
XPraptor
Думаю, что надо худеть
Академик
 
Аватар для XPraptor
 
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 541251

По умолчанию Re: снова я сосвоим парсингом

Цитата:
Сообщение от seokotov Посмотреть сообщение
хм, это как это он удалит пустой абзац и предпоследний а все остальные не удалит
Потому что отрицание - он ищет от обратного - чтобы был последний вложенный p p, вот его и удалит.
Сама процедура отрицания в регулярках очень опасна, может так нагрузить проц, что он ошалеет, но такие простые вложения можно юзать.
XPraptor вне форума   Ответить с цитированием
Сказали спасибо:
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 12:24. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc. Перевод: zCarot