Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (1): [1]   

> Описание: Функции для парсинга сложно сконструированных данных.
Kibor
Отправлено: 10 Января, 2022 - 14:57:24
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Функции parserstart и parser предназначены для поиска и классификации нужной нам информации в наборе данных. Парсинга.

Позволяют легко и надежно достать нужную информацию с сложной, динамической структуры набор данных.

parserstart - подготавливает парсер к работе. В виде параметра принимает стоку string, тект который будем парсить. Обнуляет позицию начала парсинга на 0.

 Цитата:
parserstart("В этом тексте будем искать");

Возвращает 1 в любом случае.



parser - осуществляет поиск данных.

CODE:
parser(-1, "<h3 class=^"font-x1 btmspace-30^"><i class=^"fa fa-2x(.*)-10^"></i> <a href=^"", #link[n], 200, "^">");


Первый параметр - удаленность на количество символов от предыдущего найденного с помощью этой функции или -1 если не учитывать.
Если удаленность найденного превышает этот параметр функция вернет 0.

Второй параметр - Регулярное выражение, описывающее текст, который должен идти перед искомыми данными.
Допускается указывать через запятую (следующими параметрами различные варианты этого текста.
Пример:
CODE:
parser(50, "<p>", "<br>", #link[n], 1000, "</p>", "</b>")

Означает что перед нужными данными может быть либо
CODE:
"<p>"
, либо
CODE:
"<br>"


Третий параметр - Указатель на одномерный массив string, в который запишется найденная информация.

Четвертый параметр - ожидаемая длина в символах искомых данных. Если длина превысила - функция вернет 0.

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

===================
Так же допускается не обязательный последний параметр
0 или 1
Синтаксис:
CODE:
parser(50, "<p>", #S, 1000, "</p>", 0)

CODE:
parser(50, "<p>", #S, 1000, "</p>", 1)

0 - Означает что будет найдено первое длинное вхождение, (как и без параметра).
1 - Будет найдено самое короткое вхождение заканчивающееся регулярным выражением которое означает конец подстроки.

Пример:
В самом тексте После чего или Перед чем можно указывать элементы регулярных выражений.

Пример:
Найдет то и то
 Цитата:
string text = "
";
//string text = "
";
string result;

messagebox(text);
parserstart(text);

if(parser(-1, "div id=^"g_[0-9]_", #result, 100, "^" title", 1)==1)
{
messagebox(result);
}

else messagebox("Не найдено");



Можно и так:
Просто перечислив все что может быть
 Цитата:
string text = "
";
//string text = "
";
string result;

messagebox(text);
parserstart(text);

if(parser(-1, "div id=^"g_1_", "div id=^"g_0_", #result, 100, "^" title", 1)==1)
{
messagebox(result);
}
else messagebox("Не найдено");




CODE:

Найдет между первым > и первым < после первого >
<td class=^"s1^" dir=^"ltr^"> Феникс 555-22-22, Кирилл, Донецк
string T="</td> <td class=^"s1^" dir=^"ltr^"> Феникс 555-22-22, Кирилл, Донецк </td> <td class=^"s0^"></td><td class=^"s0^">";
messagebox (T);
parserstart(T);
string S;
parser(-1, ">", #S, 100, "<\/td", 0);
messagebox (S);



CODE:

Найдет между первым > перед первым <
Феникс 555-22-22, Кирилл, Донецк
string T="</td> <td class=^"s1^" dir=^"ltr^"> Феникс 555-22-22, Кирилл, Донецк </td> <td class=^"s0^"></td><td class=^"s0^">";
messagebox (T);
parserstart(T);
string S;
parser(-1, ">", #S, 100, "<\/td", 1);
messagebox (S);



В случае успеха возвращает 1.
Неудачи - 0.

Последующий вызов функции parser производит поиск от финальной позиции предыдущего найденного.

Позиция на 0 сбрасывается функцией parserstart


Пояснение на примере парсинга сайта


Используемый код
Код (Отобразить)


Парсинг OLX на предмет появления в продаже нового автомобиля в Визуальном редакторе
 
 Top
Ilya001
Отправлено: 10 Января, 2022 - 15:21:08
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 459
Дата рег-ции: Май 2020  
Репутация: 23




Здорово
 
 Top
Kibor
Отправлено: 10 Марта, 2022 - 19:05:59
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Доработка parser

Так же допускается не обязательный последний параметр
0 или 1
Синтаксис:
CODE:
parser(50, "<p>", #S, 1000, "</p>", 0)

CODE:
parser(50, "<p>", #S, 1000, "</p>", 1)

0 - Означает что будет найдено первое длинное вхождение, (как и без параметра).
1 - Будет найдено самое короткое вхождение заканчивающееся регулярным выражением которое означает конец подстроки.

Пример:

CODE:

Найдет между первым > и первым < после первого >
<td class=^"s1^" dir=^"ltr^"> Феникс 555-22-22, Кирилл, Донецк
string T="</td> <td class=^"s1^" dir=^"ltr^"> Феникс 555-22-22, Кирилл, Донецк </td> <td class=^"s0^"></td><td class=^"s0^">";
messagebox (T);
parserstart(T);
string S;
parser(-1, ">", #S, 100, "<\/td", 0);
messagebox (S);



CODE:

Найдет между первым > перед первым <
Феникс 555-22-22, Кирилл, Донецк
string T="</td> <td class=^"s1^" dir=^"ltr^"> Феникс 555-22-22, Кирилл, Донецк </td> <td class=^"s0^"></td><td class=^"s0^">";
messagebox (T);
parserstart(T);
string S;
parser(-1, ">", #S, 100, "<\/td", 1);
messagebox (S);
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« О программе Кибор »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by