@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Некорректно работает not/=false в XPath? Ищи другое решение!
-
Задача:
Получить (!) классы каждой section за исключением не отображаемых (display: none).
Дано:
class='..' - набор различных классов.
<div class='a'> <article class='b ..'> <section class='c ..'> <div class='..'>point</> </> <section class='c ..'> <span class='head'> point </> <span class='value'> point </> </> <section class='c ..' style='display: none;'> </> <section class='c ..' style='display: none;'> <span class='head'> trash </> </> </> </>Решение:
Работает при поиске в браузере (в BAS не работает):
- //section[contains(@class, "с") and (contains(@style, "none"))=false]/@class
- //section[not(contains(@style, "none"))]
Работает в BAS (так как у span один класс можно не применять contains):
- //span[contains(@class, "value")]/parent::section[contains(@class, "с")]/@class
То есть сначала заход через дочерний элемент, класс value, потом через родителя.
(для div'а нужно прописать аналог через | но это будет уже много)
Где здесь ошибка?
Картинки: (/@class убран)
Пример с div через | :

Пример здорового XPath :

-
@y4n23x said in Некорректно работает not/=false в XPath? Ищи другое решение!:
//section[not(contains(@style, "none"))]этот работает, но не всегда. Проблема в том что в бас нет варианта за раз взять все подходящие элементы. Надо перебирать в цикле.
вот пример в первом варианте работает:
https://dropmefiles.com/Dr9ps@Fox а вот этот уже к тебе вопрос - во втором варианте ошибку выдает, хотя если открыть действие - элементы видит.
И еще по умолчанию в действии начать цикл, получить Колличество Элементов и в действии получить атрибут - не ставит вот это в поле xpath (то что там должно быть по умолчанию, как обычно)
>XPATH>а без этого указателя находит один элемент а не 2
В любом случае во втором варианте баг какой то.
-
Вот и я столкнулся на днях с этой проблемой не работает XPath поиск элементов на странице. Решением было Xpath встроенной в BAS! Вот старая выжимка поиска и она к сожалению не работает.

-
Поиск атрибута @class каждого видимого элемента section: (класс general-section), not(@style)
Решение: (первые два видимых section не имеют span, и запрос для включения div в первой картинке)
//span[contains(@class, "value")]/parent::section[contains(@class, "general-section")]/@classВыводит все атрибуты @class всех (!) нужных section . Единственное из предложенных рабочее.
not или альтернатива =false работают в BAS, но очень проблемно. Хотя в браузере (не BAS'овском) ищет нормально.
Например:
//ul[contains(@class, "navbar-nav")]//a[not(@href="#")]нормально работает, но это для другой страницы и здесь получение текста, а не xml.
-Почему просто не поставить
not(@style)? - выведет в результат баннер.
-Под видимым подразумевается section без @style='display: none' -
Вы бы шаблон тестовый приложили с разными примерами. А то я вот вообще понять не могу как вы за раз обработали несколько элементов.
Я вам скинул шаблон в котором через not contains работает. Смотри выше.
-
(!) Причём, если [contains(@class, "value")] убрать и добавить исключение атрибута @style (будь то просто атрибут или его значение @style="..." или contains)
//span/parent::section[contains(@class, "general-section") and not(contains(@style))]/@classХоть мы и исключили скрытые section, но (!!!) только в запросе.
(Результат ответа BAS = нету большинства скрытых section, но в результате есть две лишние)
Почему? -Ответ очевиден, так как мы заходили с элемента span убрались те section, которые нам нужны и те которые нам не нужны, которые не содержат span.
Вывод: Те же самые запросы в браузере через инспектор элементов (!) работают и выдают правильные значение, которые мы и запрашиваем. Следовательно not/=false работает нестабильно, ведь, если браузер обрабатывает мои запросы, то ошибки в них нету.
-
@y4n23x said in Некорректно работает not/=false в XPath? Ищи другое решение!:
Поиск атрибута @class каждого видимого элемента section: (класс general-section), not(@style)
Решение: (первые два видимых section не имеют span, и запрос для включения div в первой картинке)
//span[contains(@class, "value")]/parent::section[contains(@class, "general-section")]/@classВыводит все атрибуты @class всех (!) нужных section . Единственное из предложенных рабочее.
not или альтернатива =false работают в BAS, но очень проблемно. Хотя в браузере (не BAS'овском) ищет нормально.
Например:
//ul[contains(@class, "navbar-nav")]//a[not(@href="#")]нормально работает, но это для другой страницы и здесь получение текста, а не xml.
-Почему просто не поставить
not(@style)? - выведет в результат баннер.
-Под видимым подразумевается section без @style='display: none'А вы как проверяли работу в BAS?

Скрипт: 2457.xml