Как правильно парсить такое?

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
Все интересующее меня содержимое хранится в "_post_content" Хочу достать оттуда автора поста, тект поста, дату поста и записать в текстовом виде в файл, но ничего не получается.
Планировал сделать так:
Создать DOM откуда в переменную кинуть весь код страницы, а из нее регуляркой доставать инфу в цикле, но так вытаскивается только инфа с одного поста.


45323
 
Последнее редактирование:

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
Вот регулярные выраения которые я сделал в конструкторе :
Код:
(?<=class="post_link" href=").+?(?=") - вытаскивает ссылку из кода
(?<=class="rel_date.+?>).+?(?=</span>) - вытаскивает дату
(?<=wall_post_text">).*?</div - текст поста
(?<=owner_link">).*(?=</a>)  - автора или название группы
Правильные они или нет?
В цикле почему-то не работает и вытаскивает всегда только инфу из одного поста.

вот сам проект если что
 

Вложения

Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
кубик парсинга сломался ?
я вообще правильно делаю или это не так делается?

Вообще интересно просто, если брать код страницы DOMом и вытаскивать из него регулярными выражениями в цикле, это правильно или это как-то по другому делается?
 

Вложения

Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
я бы сделал так
45344


нашел бы коллекцию постов, красными стрелками указаны, по Xpath и для каждой записи в коллекции нашел бы дочек с нужной информацией и все это хозяйство в таблицу сложил.
 
  • Спасибо
Реакции: bladder

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
я бы сделал так
Посмотреть вложение 45344

нашел бы коллекцию постов, красными стрелками указаны, по Xpath и для каждой записи в коллекции нашел бы дочек с нужной информацией и все это хозяйство в таблицу сложил.
А чисто силами конструктора такое сделать можно?
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
А чисто силами конструктора такое сделать можно?
Можно. Ты после загрузки regexoм парсишь походу только одно совпадение, а не все. Чтобы понимать как это работает - нужно поставить XPath Helper Wizard, и разобраться с тем, что тебе выше написали.

Парсить DOM регулярками несколько раз подряд - гиблое дело для компуктера, да и вообще в целом.
 
  • Спасибо
Реакции: bladder

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
Можно. Ты после загрузки regexoм парсишь походу только одно совпадение, а не все.
Чтобы понимать как это работает - нужно поставить XPath Helper Wizard, и разобраться с тем, что тебе выше написали.
Без изучения XPath все-таки вопрос не решится?(
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 941
Благодарностей
4 331
Баллы
113
  • Спасибо
Реакции: bladder

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Xpath учить не надо. Его надо использовать))) Хочешь - пиши в телегу, я могу завтра выделить время, помочь
 
  • Спасибо
Реакции: bladder

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
Даже не смотря вопрос, уверен - решится.
Если долго мучиться, что-нибудь получится :-)
Xpath учить не надо. Его надо использовать))) Хочешь - пиши в телегу, я могу завтра выделить время, помочь
Спасибо большое за желание помочь, но мой провайдер переблокировал все подступы к скачиванию и использование этой программы и я не смогу наверное там написать.
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Если долго мучиться, что-нибудь получится :-)

Спасибо большое за желание помочь, но мой провайдер переблокировал все подступы к скачиванию и использование этой программы и я не смогу наверное там написать.
Softportal.ru, там есть
 
  • Спасибо
Реакции: bladder

LiMe

Client
Регистрация
10.12.2015
Сообщения
592
Благодарностей
313
Баллы
63
Вот регулярные выраения которые я сделал в конструкторе :
Код:
(?<=class="post_link" href=").+?(?=") - вытаскивает ссылку из кода
(?<=class="rel_date.+?>).+?(?=</span>) - вытаскивает дату
(?<=wall_post_text">).*?</div - текст поста
(?<=owner_link">).*(?=</a>)  - автора или название группы
Правильные они или нет?
В цикле почему-то не работает и вытаскивает всегда только инфу из одного поста.

вот сам проект если что
Вытаскивает информацию с одного поста скорей всего из-за того что вы заберете только первое совпадение, а вам нужно просто перебрать все совпадения.
т.е. как вариант решение, берем первое совпадение, проверяем на пустоту переменную, если она не пустая значить, берем второе совпадения и так до тех пор пока переменная не окажется пустой. И зачем вы берете DOM в переменную, если для этого есть внутренняя переменная - {Page.Dom}.
 
  • Спасибо
Реакции: bladder

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
Вытаскивает информацию с одного поста скорей всего из-за того что вы заберете только первое совпадение, а вам нужно просто перебрать все совпадения.
Вот в этом то и проблема т.к я не знаю как правильно это сделать, уже пробовал закидывать все найденное в списки и из них доставать регулярным выражением через "обработку текста" и так срабатывает, но в таблицах рандомная инфа оказывается из разных постов.

А сейчас встал на таком способе:
DOM - весь html страницы кладет в post_html> REGEX] обработка текста из post_html с регулярным выражением как писал выше и он должен парсить посты до тех пор, пока счетчик равен n_news(тут цифра сколько раз должен сработать счетчик)
45444



т.е. как вариант решение, берем первое совпадение, проверяем на пустоту переменную, если она не пустая значить, берем второе совпадения и так до тех пор пока переменная не окажется пустой.
Т.е допустим я беру {Page.Dom} > "[REGEX] обработка текста" с рег. выражением "(?<=class="post_link" href=").+?(?=")" кладу полученный результат в переменную post_link, делаю if проверку post_link <= 0 если больше нуля, то пускаю дальше?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
есть же готовые примеры парсеров. РАБОЧИЕ. берете пример, по шагам проходите по всему шаблону, на бумажечку выписываете ключевые моменты и прям по аналогии делаете на своем ресурсе.
вот например https://zennolab.com/discussion/threads/parser-objavlenij-domofond-ru.67395/
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Вот в этом то и проблема т.к я не знаю как правильно это сделать, уже пробовал закидывать все найденное в списки и из них доставать регулярным выражением через "обработку текста" и так срабатывает, но в таблицах рандомная инфа оказывается из разных постов.

А сейчас встал на таком способе:
DOM - весь html страницы кладет в post_html> REGEX] обработка текста из post_html с регулярным выражением как писал выше и он должен парсить посты до тех пор, пока счетчик равен n_news(тут цифра сколько раз должен сработать счетчик)
Посмотреть вложение 45444



Т.е допустим я беру {Page.Dom} > "[REGEX] обработка текста" с рег. выражением "(?<=class="post_link" href=").+?(?=")" кладу полученный результат в переменную post_link, делаю if проверку post_link <= 0 если больше нуля, то пускаю дальше?
В том и дело, у тебя настройки regex верные? Там можно брать одно совпадение (первое), либо все совпадения в список.
Я бы помог, если бы обратная связь была быстрая и доступ через AnyDesk или Teamviewer.
 
  • Спасибо
Реакции: bladder

LiMe

Client
Регистрация
10.12.2015
Сообщения
592
Благодарностей
313
Баллы
63
есть же готовые примеры парсеров. РАБОЧИЕ. берете пример, по шагам проходите по всему шаблону, на бумажечку выписываете ключевые моменты и прям по аналогии делаете на своем ресурсе.
вот например https://zennolab.com/discussion/threads/parser-objavlenij-domofond-ru.67395/
Я это вижу примерно вот так, вы скорей всего так и берет первое совпадения, счетчик у вас этот не участвует в работе посути.
45482
 
  • Спасибо
Реакции: bladder

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
В том и дело, у тебя настройки regex верные? Там можно брать одно совпадение (первое), либо все совпадения в список.
Я бы помог, если бы обратная связь была быстрая и доступ через AnyDesk или Teamviewer.
У меня стоит "первое" совпадение, потому что я вытаскиваю только свежие записи по 1 шт, которые появляются по 5-10 штук в час в ленте.
45654



Парсер находит кнопку, в которой есть значение сколько новых новостей появилось и это значение кладется в n_news и счетчик цикла Counter1 срабатывает по цифре которая находится в этом n_news(показать 6 новых записей).

45660
45659
 

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
Я бы помог, если бы обратная связь была быстрая и доступ через AnyDesk или Teamviewer.
Я чет боюсь таких программ, потому что потом у меня параноя будет что за мной следят)
Я это вижу примерно вот так, вы скорей всего так и берет первое совпадения, счетчик у вас этот не участвует в работе посути.
Посмотреть вложение 45482
Не, я беру "первое" совпадение, потому что "все" будет загонять все найденное, а мне нужно только новое.
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Я чет боюсь таких программ, потому что потом у меня параноя будет что за мной следят)
Не, я беру "первое" совпадение, потому что "все" будет загонять все найденное, а мне нужно только новое.
Так можно из всех брать с 1 по какое-то, если у тебя есть цифра, которую ты спарсил из "X новых записей" И берешь совпадения[0- (X-1)]... Всё реально, уже бы давно телегу поставил и написал.

45675


Насчёт паранойи - дело личное)) Пугать не буду, но телефон твой тоже за тобой в какой-то степени следит)
;-)
 
  • Спасибо
Реакции: bladder

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
Так можно из всех брать с 1 по какое-то, если у тебя есть цифра, которую ты спарсил из "X новых записей" И берешь совпадения[0- (X-1)]...
Я тоже об этом думал, но просто мне показалось что проще брать код страницы и сразу допустим 5 новых парсить, а не загонять все в список, а потом из списка отчитывать эти 5 найденных постов.
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Я тоже об этом думал, но просто мне показалось что проще брать код страницы и сразу допустим 5 новых парсить, а не загонять все в список, а потом из списка отчитывать эти 5 найденных постов.
Так список и очищать можно в конце концов перед каждым новым циклом) Ладно, делай как удобно, главное чтобы был результат :-)
 

LiMe

Client
Регистрация
10.12.2015
Сообщения
592
Благодарностей
313
Баллы
63
Я тоже об этом думал, но просто мне показалось что проще брать код страницы и сразу допустим 5 новых парсить, а не загонять все в список, а потом из списка отчитывать эти 5 найденных постов.
А зачем загонять? Получаете свои N совпадений, и берете их по очереди, и кладете куда вам там нужно.
Единственное отчет идет от нуля, и вам надо сделать N-1 и потом взять все эти совпадения.
Действительно поставили бы Telegram, вам давно бы уже подсказали + есть Telegram-чат в котором можно задать вопрос и вам с большой вероятностью ответят.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)