Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Помогите с парсером

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

1. MMalinovskij - 01 Января, 2023 - 02:34:40 - перейти к сообщению
Всем привет, ника не могу разобраться с работой парсера
мне необходимо из данного текста достать значения
<div class="size-val size-opt">36</div>
<div class="size-val size-opt">37</div>
<div class="size-val size-opt">38</div>
<div class="size-val size-opt">43</div>

код проекта не смог прикрепить так как максимальный размер сообщения 6 кб, могу сбросить на почту или в телегу


Парсер или просто не запускается (Kibor не отвечает) либо выдает ошибку
помогите пожалуйста решить проблему
2. Zireael - 01 Января, 2023 - 02:56:27 - перейти к сообщению
Скопировать нужный текст в буфер, запустить скрипт.
CODE:
string text;
readclipboard(text); // получить текст из буфера обмена
messagebox(text);

string result[999];
int count = regexsearch(999, #result[0], text, "(?<<div class=.size-val size-opt.>)\d+(?=</div>)");
messagebox("Найдено совпадений: " + format(count));
for(int i=0; i<count; i++)
{
messagebox(result[i]);
}

Данное регулярное выражение ищет число между <div class="size-val size-opt"> и </div>.
 Цитата:
Парсер или просто не запускается (Kibor не отвечает) либо выдает ошибку

Скорее всего неверно составлен шаблон поиска. Возможно не экранированы кавычки.
3. Kibor - 01 Января, 2023 - 02:59:50 - перейти к сообщению
11

CODE:
string Rez_Parser_Kib;

int eCol_Kib, eX_Kib, eY_Kib;
getdisplay(eCol_Kib, eX_Kib, eY_Kib);

string T="<div class=^"size-val size-opt^">36</div>^r^n"+
"<div class=^"size-val size-opt^">37</div>^r^n"+
"<div class=^"size-val size-opt^">38</div>^r^n"+
"<div class=^"size-val size-opt^">43</div>";

messagebox(T);

ParserStart(T, 0, "<br>", "известно", 0, 0);

loop()
{
goto KIB_2;
KIB_5: messagebox(Rez_Parser_Kib);
goto KIB_C6;
KIB_2: if (parser(-1, "size-opt^">", #Rez_Parser_Kib, 5, "</div")==1) goto KIB_5;
goto KIB_7;
KIB_C6:
}

goto KIB_Exit;

KIB_7: messagebox("Финиш");

KIB_Exit:;



function ParserStart(string text, int zp, string zona1, string zona2, int sm1, int sm2)
{
if (zp)
{
if (sm1!=0 || sm2!=0)text=cuttext(text, zona1, sm1, zona2, sm2);
else text=cuttext(text, zona1, zona2);
}
parserstart(text);
}

(Добавление)
Или просто код без визуального редактора
CODE:
string Rez_Parser_Kib;

string T="<div class=^"size-val size-opt^">36</div>^r^n"+
"<div class=^"size-val size-opt^">37</div>^r^n"+
"<div class=^"size-val size-opt^">38</div>^r^n"+
"<div class=^"size-val size-opt^">43</div>";

messagebox(T);

parserstart(T);

loop()
{
if (parser(-1, "size-opt^">", #Rez_Parser_Kib, 5, "</div")==1) messagebox(Rez_Parser_Kib);
else break;
}

messagebox("Финиш");
4. MMalinovskij - 01 Января, 2023 - 06:55:13 - перейти к сообщению
 Kibor пишет:
<a href="(для просмотра ссылки Вам необходимо авторизоваться) src="https://i.ibb.co/M1Qyr8G/11.jpg" alt="11" border="0"></a>

CODE:
string Rez_Parser_Kib;

int eCol_Kib, eX_Kib, eY_Kib;
getdisplay(eCol_Kib, eX_Kib, eY_Kib);

string T="<div class=^"size-val size-opt^">36</div>^r^n"+
"<div class=^"size-val size-opt^">37</div>^r^n"+
"<div class=^"size-val size-opt^">38</div>^r^n"+
"<div class=^"size-val size-opt^">43</div>";

messagebox(T);

ParserStart(T, 0, "<br>", "известно", 0, 0);

loop()
{
goto KIB_2;
KIB_5: messagebox(Rez_Parser_Kib);
goto KIB_C6;
KIB_2: if (parser(-1, "size-opt^">", #Rez_Parser_Kib, 5, "</div")==1) goto KIB_5;
goto KIB_7;
KIB_C6:
}

goto KIB_Exit;

KIB_7: messagebox("Финиш");

KIB_Exit:;



function ParserStart(string text, int zp, string zona1, string zona2, int sm1, int sm2)
{
if (zp)
{
if (sm1!=0 || sm2!=0)text=cuttext(text, zona1, sm1, zona2, sm2);
else text=cuttext(text, zona1, zona2);
}
parserstart(text);
}

(Добавление)
Или просто код без визуального редактора
CODE:
string Rez_Parser_Kib;

string T="<div class=^"size-val size-opt^">36</div>^r^n"+
"<div class=^"size-val size-opt^">37</div>^r^n"+
"<div class=^"size-val size-opt^">38</div>^r^n"+
"<div class=^"size-val size-opt^">43</div>";

messagebox(T);

parserstart(T);

loop()
{
if (parser(-1, "size-opt^">", #Rez_Parser_Kib, 5, "</div")==1) messagebox(Rez_Parser_Kib);
else break;
}

messagebox("Финиш");


Спасибо, помогло, только я не понимаю по какой логике это работает и что именно нужно подучить, пытаюсь по примеру вытащить данные указанные ниже вылетают так же ошибки

<td colspan="2"><nobr>J0018</nobr></td>
<td colspan="2"><nobr>J0017</nobr></td>
<td colspan="2"><nobr>J0015</nobr></td>

Пробовал

td colspan="2"><nobr^">"..."</nobr"
"2"><nobr^">"..."</nobr"
5. Kibor - 01 Января, 2023 - 07:12:53 - перейти к сообщению
 MMalinovskij пишет:
только я не понимаю по какой логике это работает и что именно нужно подучить


CODE:
"td colspan=^"2^"><nobr^">"..."</nobr";
"^"2^"><nobr^">"..."</nobr"


 MMalinovskij пишет:
и что именно нужно подучить

Экранирующий символ
6. MMalinovskij - 01 Января, 2023 - 07:15:13 - перейти к сообщению
 Kibor пишет:
 MMalinovskij пишет:
только я не понимаю по какой логике это работает и что именно нужно подучить


CODE:
"td colspan=^"2^"><nobr^">"..."</nobr";
"^"2^"><nobr^">"..."</nobr"


 MMalinovskij пишет:
и что именно нужно подучить

Экранирующий символ



Значение J0018

<td colspan="2"><nobr>J0018</nobr></td>
7. Zireael - 01 Января, 2023 - 07:46:16 - перейти к сообщению
 Цитата:
<td colspan="2"><nobr>J0018</nobr></td>

Проще заменить кавычки на точки. Точка будет означать один любой символ.
Т. е. искать между: <td colspan=.2.><nobr> и </nobr></td>

 Цитата:
regexsearch(999, #result[0], text, "(?<<div class=.size-val size-opt.> )\d+(?=</div> )" );

После ?< равно не дописал, должно быть так:
CODE:
regexsearch(999, #result[0], text, "(?<=<div class=.size-val size-opt.>)\d+(?=</div>)");
8. MMalinovskij - 01 Января, 2023 - 10:03:33 - перейти к сообщению
 Kibor пишет:
 MMalinovskij пишет:
только я не понимаю по какой логике это работает и что именно нужно подучить


CODE:
"td colspan=^"2^"><nobr^">"..."</nobr";
"^"2^"><nobr^">"..."</nobr"


 MMalinovskij пишет:
и что именно нужно подучить

Экранирующий символ


по какой то причине выдает пустой месседжбокс

<span style="font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Lucida Grande&quot;, tahoma, verdana, arial, sans-serif, serif, EmojiFont; font-size: 22px; line-height: 22px; font-weight: bold; letter-spacing: 5px;">607407</span>

необходимо спарсить 607407[img](для просмотра ссылки Вам необходимо авторизоваться) /img]

Здесь такая же проблема

<td colspan="2"><nobr>J0018</nobr></td>

необходимо спарсить J0018 [img](для просмотра ссылки Вам необходимо авторизоваться) /img]
9. Kibor - 01 Января, 2023 - 10:10:17 - перейти к сообщению
Проблем нигде нет. Выкладывайте схему или код если кодом.
10. MMalinovskij - 06 Января, 2023 - 04:09:55 - перейти к сообщению
Никак не могу правильно настроить

Задача: спарсить данные из [img](для просмотра ссылки Вам необходимо авторизоваться) /img]

нужно получить: Код/Арт (J0018), размер (36) при условии что строка зеленая или указано что (Є),Дроп ціна (1900)

это все нужно внести в таблицу чтобы получить вот такой результат [img](для просмотра ссылки Вам необходимо авторизоваться) /img]

Я получаю вот такой результат [img](для просмотра ссылки Вам необходимо авторизоваться) /img]

При вот таких настройках [img](для просмотра ссылки Вам необходимо авторизоваться) /img]



Буду весьма благодарен за помощь

Powered by ExBB FM 1.0 Final