Вернуться   Форум об интернет-маркетинге > >
Ответ
 
Опции темы
Старый 17.05.2019, 15:12   #11
lutskboy
Кандидат наук
 
Регистрация: 22.11.2013
Сообщений: 358
Репутация: 29483

По умолчанию Re: Учусь парсить нужны советы

для етого есть xpath. simple html dom parser. pquery
lutskboy вне форума   Ответить с цитированием

Реклама
Старый 17.05.2019, 19:55   #12
Dram
Академик
 
Регистрация: 28.06.2008
Сообщений: 7,003
Репутация: 391626

ТопикСтартер Re: Учусь парсить нужны советы

Еще прошу совета - вот есть регулярка (.*) - любой символ 0 и более раз.
Но она не понимает пробелы. Как в нее добавить пробел? и еще нужно учесть "ничего"

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

чтобы нагляднее https://regex101.com/r/OG8Aw4/1 почему регулярка
Цитата:
<p(\s*)www(.*)>(.*)</p>
вообще ничего не цепляет?
Я правильно понимаю что \s* - нет пробела, есть пробел, несколько пробелов?

Последний раз редактировалось Dram; 17.05.2019 в 20:16..
Dram вне форума   Ответить с цитированием
Старый 17.05.2019, 20:41   #13
Sitealert
Временно отключен
 
Регистрация: 30.09.2016
Адрес: Замкадье
Сообщений: 4,895
Репутация: 348171

По умолчанию Re: Учусь парсить нужны советы

Цитата:
Сообщение от Dram Посмотреть сообщение
Еще прошу совета - вот есть регулярка (.*) - любой символ 0 и более раз.
Но она не понимает пробелы.
Понимает, наравне со всеми остальными.
Цитата:
Сообщение от Dram Посмотреть сообщение
почему регулярка вообще ничего не цепляет?
Потому что нет соответствий.
Цитата:
Сообщение от Dram Посмотреть сообщение
Я правильно понимаю что \s* - нет пробела, есть пробел, несколько пробелов?
Правильно.

Попробуй варианты
Цитата:
<p\s+.*www(.*)>(.*)</p>
<p.+www(.*)>(.*)</p>
Эти варианты захватывают, но по разным правилам, - смотря по тому, что интересует.
Sitealert вне форума   Ответить с цитированием
Сказали спасибо:
Старый 17.05.2019, 20:46   #14
Dram
Академик
 
Регистрация: 28.06.2008
Сообщений: 7,003
Репутация: 391626

ТопикСтартер Re: Учусь парсить нужны советы

\s+.* это я правильно понимаю - точно один или более пробелов + 1 или более символов
Dram вне форума   Ответить с цитированием
Старый 17.05.2019, 20:57   #15
Sitealert
Временно отключен
 
Регистрация: 30.09.2016
Адрес: Замкадье
Сообщений: 4,895
Репутация: 348171

По умолчанию Re: Учусь парсить нужны советы

Правильнее сказать не символов, а любых символов. И любых - от 0 и больше. Даже вот так проще
Код:
<p\s.*www(.*)>(.*)</p>
Один пробел, а дальше любые символы, включая пробелы.
Sitealert вне форума   Ответить с цитированием
Сказали спасибо:
Старый 17.05.2019, 21:06   #16
Dram
Академик
 
Регистрация: 28.06.2008
Сообщений: 7,003
Репутация: 391626

ТопикСтартер Re: Учусь парсить нужны советы

Спасибо!!!!!!!!!!
Dram вне форума   Ответить с цитированием
Старый 18.05.2019, 04:16   #17
Lastwarrior
Академик
 
Регистрация: 25.12.2013
Сообщений: 3,348
Репутация: 135460

По умолчанию Re: Учусь парсить нужны советы

Цитата:
Сообщение от Апокалипсис Посмотреть сообщение
Для отладки регулярок очень рекомендую сервис: https://regex101.com/
А я загружаю нужный мне фрагмент для парсинга в NotePad++ и там тестирую регулярки.
Lastwarrior вне форума   Ответить с цитированием
Старый 18.05.2019, 08:38   #18
melkozaur
Избранный Адсенсом
 
Аватар для melkozaur
 
Регистрация: 07.04.2010
Адрес: Москва
Сообщений: 7,454
Репутация: 1079225

По умолчанию Re: Учусь парсить нужны советы

Цитата:
Сообщение от _SP_ Посмотреть сообщение
распарсивать его целиком немного долго и геморно
Ну какой-нибудь Датакол быстро парсит, даже с кучей всяких замен и загрузкой фоток. Там просто надо норм. настроить, в первую очередь страницы определить конкретные, тогда летает.
melkozaur вне форума   Ответить с цитированием
Старый 18.05.2019, 18:08   #19
Dram
Академик
 
Регистрация: 28.06.2008
Сообщений: 7,003
Репутация: 391626

ТопикСтартер Re: Учусь парсить нужны советы

Снова вопрос про регулярки, почему эта регуляка
Цитата:
<p\s*class(.*)more[^\s]>(.*)</p>
не цепляет эту конструкцию
Цитата:
<p class=\'more\' ><a href="interesting.php">подробнее...</a></p>
насколько я себе понимаю то что написал -это значит

сколько угодно пробелов после <p
затем что угодно между class и more
отсутствие пробелов после more
все что угодно внутри этого тега с данным классом.

Где ошибаюсь?

---------- Добавлено 18.05.2019 в 18:12 ----------

все - решил вопрос так -
Цитата:
<p\s*class(.*)more[^\s](.*)>(.*)</p>
или так даже лучше получилось
Цитата:
<p\s*class.{0,3}more[^\s](.*)>(.*)</p>

Последний раз редактировалось Dram; 18.05.2019 в 18:21..
Dram вне форума   Ответить с цитированием
Старый 18.05.2019, 20:40   #20
Sitealert
Временно отключен
 
Регистрация: 30.09.2016
Адрес: Замкадье
Сообщений: 4,895
Репутация: 348171

По умолчанию Re: Учусь парсить нужны советы

Цитата:
Сообщение от Dram Посмотреть сообщение
почему эта регулярка
не цепляет эту конструкцию
Я всё-таки отвечу
По двум причинам не цепляет:
1. В class=\'more\' > пробел всё же есть.
2. [^\s] - это один символ, а их там больше.
Sitealert вне форума   Ответить с цитированием
Ответ



Опции темы

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


Регистрация Справка Календарь Поддержка Все разделы прочитаны