Если фри, то выше кинули, если через сервисы, можно также "вдохновиться" моим скриптом решалки Яндекс капчи, там ровно такая же суть, но прикручено решение через антигейт (с ручными индусами), но можно так и любой сервис с индусами прикрутить. Решение на гуру не чекал, баланса небыло на аке)
Функция Xpath для удаления пробелов (normalize-space())
-
@Denis_krsk said in Функция Xpath для удаления пробелов (normalize-space()):
Она вроде убирает пробелы только у значений параметров атрибутов
Вроде нет http://xpoint.ru/know-how/XML/XSLT/CookBook/Trim .
Из этого примера не как не пойму, где ее использовать в запросе
//p[@class='description']/text() -
@solt Кстати свою же задачу полугодовалой давности сейчас решил:
@Fox said in Xpath замена параметров в конфиге proxifier:@UA Решил я значит перейти с любимых мной регулярок на Xpath.
На сайте в дереве dom-элементов текст с переносом строки:" Fox "Если применять экшен Xpath получить текст, то получаешь пробел. Сработал Xpath получить xml
//div[@class="nickname"]/text()[2]В логе получается идеально, но вот сохраняя в файл вижу:
Fox И вот с этим мифическим элементом переноса строки
ни как не получается справиться..
trim() не помогает.Вернул регулярку в место Xpath, пока не придумаю как решить.
Оказалось replace легко справляется с 
[[XPATH_XML]] = ([[XPATH_XML]]).replace(/ /g, "") [[TEST]] = [[XPATH_XML]].trim()Может и вам поможет.
-
@Fox said in Функция Xpath для удаления пробелов (normalize-space()):
Попробуйте через trim:
@Fox said in Функция Xpath для удаления пробелов (normalize-space()):
Оказалось replace легко справляется с 
Спасибо. Хороший вариант. Воспользуюсь вашим способом.
Вопрос останется открытым, т.к. хотелось бы "Убить двух зайцев" одним запросом, что бы минимизировать количество действий/запросов в скрипте.
-
@solt @Fox Я раньше подобные задачи тут http://videlibri.sourceforge.net/cgi-bin/xidelcgi пробовал решать, но уже несколько дней не работает, а аналогичные сервисы все какие-то не какие :( Там было удобно тестить ввел запрос, а тебе сразу результат. Может кстати кто-то подскажет достойную замену сервису?
-
Что то наколдовал (сам пока не пойму что :) ) В код полез в первые, до этого в BAS пользовался только готовыми действиями ("Кубиками")
Если что, поправите (можно так\нельзя\в чем ошибка?)... Пока работает :)
Решил не использовать действие Xpath получить текст для каждого запроса отдельно. А записать все в одно действие "Выполнить код"
VAR_DESCRIPTION = http_client_xpath_xml("//p[@class='description']/text()",!(true)) VAR_DESCRIPTION = VAR_DESCRIPTION.trim() VAR_TITLE = http_client_xpath_xml("//h1/text()",!(true)) VAR_TITLE = VAR_TITLE.trim() VAR_NAME = http_client_xpath_xml("//div[@class='owner-name ']/text()",!(true)) VAR_NAME = VAR_NAME.trim() VAR_DATE = http_client_xpath_xml("//span[@class='date']/text()",!(true)) VAR_DATE = VAR_DATE.trim() VAR_PRICE = http_client_xpath_xml("//span[@class='price float-left']/text()",!(true)) VAR_PRICE = VAR_PRICE.trim() VAR_PHONE = http_client_xpath_xml("//a[@id='phoneCall']/@href",!(true)) VAR_PHONE = VAR_PHONE.trim() VAR_PHONE = VAR_PHONE.replace("tel:", "") VAR_VIEWS = http_client_xpath_xml("//span[@class='views icon-eye']/text()",!(true)) VAR_VIEWS = VAR_VIEWS.trim()
-
@solt said in Функция Xpath для удаления пробелов (normalize-space()):
normalize-space()
Я взялся потестировать эту тему, причем интересовал именно подход с
normalize-space()Так вот. Ничего работать не будет. Потому что уже вот так должно работать:
normalize-space(//p[@class='description'])Вот ссылка с онлайн-тестером: https://www.freeformatter.com/xpath-tester.html
Вот ваш фрагмент:
<div class="ad-meta-data"> <h1 class="title"> Bitmain asic antminer s9 13. 5 th/s (в наличии) </h1> <div class="info"> <span class="date"> Вчера, 23:41 </span> </div> <p class="description"> Bitmain asic antminer s9 13. 5 th/s (в наличии) </p> <a href="/user/1935415">asdfgsdfg</a> </div>Должно работать. А БАС этот квери не может отресолвить. Функция появилась еще в спецификации 1.0. И так же замечательная функция
translate()не будет работать.
Потому что иcпользуется какой-то HTML-парсер, а не XML. Я об этом уже репортил тут: http://community.bablosoft.com/topic/3584/мелочи-от-зануды/35
-
Тоже долго искал пытался удалить эти пробелы потом решил регуляркой удалить по 2 пробела которые рядом есть и в результате получилось так чтоб все нужные пробелы остались а не нужные ушли спасибо @Fox как всегда выручаешь следующий раз попробую твой вариант