О каком сайте и кнопке идет речь?
Почему не запускается цикл?
-
Мне нужно собрать телефоны со странички
https://www.igrit.pl/kategoria/gielda-ziemniakow-chipsowe-43?type=2&category=gielda-ziemniakow-chipsowe-43&page=1Как я это делаю:
- Загружаю страничку
- Копирую весь html код в переменную
- Извлекаю первый номер телефона из блока (физически из переменной)
- Извлекаю второй номер телефона из блока (физически из переменной)
...
Вот сам скрипт:
Парсинг igrit.pl v2.xmlПроблема в том, что цикл по всем блокам никак не хочет запускаться.

Вот сам блок на сайте:

Условие вхождения в цикл - наличие куска кода
<h3 class="font-weight-bolder mt-0 mb-2" style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; font-size: 20px;">
То есть я проверяю, существует ли заголовок блока <h3>Почему цикл не хочет запускаться?
-
@morozover said in Почему не запускается цикл?:
Условие вхождения в цикл - наличие куска кода
<h3 class="font-weight-bolder mt-0 mb-2" style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; font-size: 20px;">
То есть я проверяю, существует ли заголовок блока <h3>
Почему цикл не хочет запускаться?Прочитайте описание действия "Начать Цикл"

Начать цикл по все элементам страницы соответствующим запросу.Вот ваш селектор для этого действия:
>MATCH><h3 class="font-weight-bolder mt-0 mb-2" style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; font-size: 20px;">AT>[[PAGE_HTML]]В переменную [[PAGE_HTML]] вы получаете весь код страницы, но зачем то пытаетесь его использовать с префиксом >AT>[[PAGE_HTML]]
В префиксе >AT> можно использовать только целые, положительные числа (Integer) Вот мануал по селекторам.
-
@fox
Проблема в том, что на страничке есть несколько телефонных номеров (в каждом блоке - один номер), и мне нужно как-то организовать перебор всех блоков.Поэтому я и добавил условие цикла - наличие <h3> (это заголовок блока).
В условие цикла добавлена переменная [[PAGE_HTML]], потому что именно в ней хранится html-код странички. И именно в коде я и ищу номера телефонов.Как же мне тогда извлечь из кода странички все кусочки:
</p></a> <div data-phone="516091104" class="bottom-post d-flex justify-content-between"></p></a> <div data-phone="664425230" class="bottom-post d-flex justify-content-between">Цифры и есть искомые телефонные номера.
</p></a> – добавлены потому, что каждый блок <div data-phone="" присутствует в коде странички в двух экземплярах. И только перед одним есть код </p></a>.Если бы такой кусочек кода был единственным в коде странички - это было бы просто. Но их несколько.
Как же мне всё-таки сделать так, чтобы цикл заработал?
-
@morozover said in Почему не запускается цикл?:
Поэтому я и добавил условие цикла - наличие <h3> (это заголовок блока).
Условие определяется условным оператором if. В действие "Начать цикл" нужно указать селектор, который найдёт несколько элементов, которые это действие и переберёт по очереди в цикле. Префикс >AT> указывает какой по счёту взять селектор, а у вас в место цифры указан код страницы.
Вы бы хотя бы описания действий почитали..
@morozover said in Почему не запускается цикл?:
Как же мне тогда извлечь из кода странички все кусочки:
Если искомая информация есть в коде html страницы, извлечь её оттуда удобнее будет через xpath.
-
@morozover Действие "xpath получить каждый xml" с выражением
//div[@class="prize-tag"]/@data-phoneвернёт список всех номеров телефона на странице.
Вот скрипт, в цикле собирает номера в список [[NEW_LIST]].
-
Спасибо.
Единственная загадка для меня - почему цикл работает в разных случаях по-разному.Вот так работает корректно:
- Загружаю страничку
- Создаю цикл по всем элементам <h3...>
А вот так цикл вообще не запускается:
1.Загружаю страничку
2. Копирую весь html-код в переменную
3. Создаю цикл по всем элементам <h3...> в переменной (убрал неверное >AT>[[PAGE_HTML]], оставил просто [[PAGE_HTML]])Почему не работает во втором случае?
-
@morozover said in Почему не запускается цикл?:
А вот так цикл вообще не запускается:
1.Загружаю страничкуКопирую весь html-код в переменную
Создаю цикл по всем элементам <h3...> в переменной (убрал неверное >AT>[[PAGE_HTML]], оставил просто [[PAGE_HTML]])Почему не работает во втором случае?
Вы знаете, что такое селектор вообще?
-
@fox
Я читал справку.
Но как работает программа - мне не понятно.В окне блока «Начать цикл» можно нажать на кнопку «Переменная»:

После этого в выражение >MATCH> в конец добавится моя переменная [[PAGE_HTML]].
Я предполагаю, что это означает, что программа возьмёт содержимое переменной [[PAGE_HTML]] и найдёт в ней все <h3...>.
Но на деле такой цикл даже не запускается.
Я пытаюсь понять почему. -
@morozover said in Почему не запускается цикл?:
@fox
Я читал справку.
Но как работает программа - мне не понятно.В окне блока «Начать цикл» можно нажать на кнопку «Переменная»:

После этого в выражение >MATCH> в конец добавится моя переменная [[PAGE_HTML]].
Я предполагаю, что это означает, что программа возьмёт содержимое переменной [[PAGE_HTML]] и найдёт в ней все <h3...>.
Но на деле такой цикл даже не запускается.
Я пытаюсь понять почему.Значёк из переменной означает, что селектор будет взять из переменной, а вы в него весь код страницы запихиваете. Когда выбираете какой нибудь селектор, в скобках будет написано, сколько элементов по нему найдено, вот по этим, найденым элементам и начинает работать цикл.