Как передать элемент Yahoo Pipes в YQL-запрос? - PullRequest
2 голосов
/ 22 мая 2010

В YQL-элементе Yahoo Pipes обычно требуется передать значение Pipes в YQL-запрос. Например:

select * from html.tostring where url='<someurl>' and xpath='//div[@id="foo"]'

и вы хотите передать динамическое значение для <someurl>. Допустим, это URL элемента RSS-канала с именем item.link. Попытка просто заменить цитируемое someurl на item.link дает вам эту ошибку:

Неверный идентификатор item.link. me - единственный поддерживаемый идентификатор в этом контексте

Как я могу передать это значение?

1 Ответ

5 голосов
/ 22 мая 2010

Вам потребуется создать отдельный канал, который принимает URL-адрес элемента в качестве пользовательского ввода, передает его в построитель строк, который подставляет фактическое значение URL-адреса в строку запроса YQL, и передает его в качестве ввода в виджет YQL. Затем в вашем основном канале передайте значение item.link в качестве входного для вашего субпайпа.

В частности:

  1. Создание пользовательских входов -> Элемент ввода URL. Вы можете дать ему любое имя и подсказку. Для тестирования полезно установить значение «Отладка».

  2. Создать String Builder с 3 полями. В первом поле поместите строку туда, где должно быть подставлено значение. В примере в вопросе select * from html.tostring where url='. Во втором поле подключите выход из элемента ввода URL сюда. В третьем поле добавьте остаток от вывода: ' and xpath='//div[@id="foo"]'. Когда строка будет построена, это будет полная строка запроса YQL с подставленным URL-адресом, подставленным в.

  3. Создайте элемент YQL и подключите выходные данные от построителя строк к полю запроса.

  4. Подключите выход элементов YQL к элементу Pipe Output.

Сохраните новую трубу.

В вашей основной трубе создайте элемент вашей новой трубы (Мои трубы -> как бы вы ни назвали это). Обычно вы будете перетаскивать его в элемент Loop. Установите для ввода значение item.link, и вы получите правильный вывод.

...