Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 6.02 Унивесальная функция парсинга сайтов и тд.

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

1. Kibor - 10 Января, 2022 - 06:57:24 - перейти к сообщению
Функции 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 на предмет появления в продаже нового автомобиля в Визуальном редакторе
2. Ilya001 - 10 Января, 2022 - 07:21:08 - перейти к сообщению
Здорово
3. Kibor - 10 Марта, 2022 - 11:05:59 - перейти к сообщению
Доработка 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);

Powered by ExBB FM 1.0 Final