Как экранировать символы в YQL с помощью API ответа Yahoo?

Я использую API ответа Yahoo через YQL. Мой запрос "как приготовить бекон", и мне нужно включить двойные кавычки, потому что это точно соответствует, вы можете увидеть результаты отличаются в их веб-поиска:

http://answers.yahoo.com/search/search_result;_ylt=Av2RD2lUBAad6J5WYYTma6gjzKIX;_ylv=3?p=%22how+to+cook+bacon%22

против

http://answers.yahoo.com/search/search_result;_ylt=Av2RD2lUBAad6J5WYYTma6gjzKIX;_ylv=3?p=how+to+cook+bacon

Проблема в том, что я не могу избежать персонажей, которых я пытался \" и пытался в том числе %22, Было просто интересно, есть ли другой метод, который будет работать?

Вот мой пример запроса без кавычек:

http://developer.yahoo.com/yql/console/?_uiFocus=answers&q=select%20*%20from%20answers.search%20where%20query%3D%22cars%22%20and%20category_id%3D2115500137%20and%20type%3D%22resolved%22#h=select%20*%20from%20answers.search%20where%20query%3D%22how%20to%20cook%20bacon%22%20and%20type%3D%22resolved%22

2 ответа

Я думаю, что ответ Джоша был на правильном пути к исходной проблеме цитирования или экранирования запроса "Ответы", когда он проходит через YQL. Но, поиграв с этим дальше, я думаю, что настоящая проблема заключается в попытке дублировать результаты пользовательского интерфейса "Ответы" через API ответов (который, в свою очередь, читается YQL).

Я не могу сопоставить тот же набор результатов из API ответов по сравнению с веб-сайтом ответов. Я думаю, что разница в порядке сортировки по рангу, но, похоже, это не доступно в API.

В качестве альтернативы вы можете использовать RSS-каналы "Ответы" и обрабатывать их через YQL:

  1. Перейдите на answers.yahoo.com и введите пример поиска "как приготовить бекон".
  2. На странице результатов выберите ссылку RSS в левой части панели навигации ( пример).
  3. Используйте ссылку RSS вместе с модулем YQL "feed": select * from feed where url='http://answers.yahoo.com/rss/search?p=%22how+to+cook+bacon%22&scope=all&fltr=_en&question_status=all&date_submitted=all&category=0&answer_count=any&orderby=rank'

Вы должны получить результаты, подобные следующему первому результату, который, кажется, соответствует порядку, показанному в пользовательском интерфейсе:

<item>
  <title>Resolved Question: How to cook bacon?
  <link>http://answers.yahoo.com/question/index?qid=20070416221341AAkZArM
  <guid isPermaLink="true">http://answers.yahoo.com/question/index?qid=20070416221341AAkZArM
  <pubDate>Tue, 17 Apr 2007 5:13:41 GMT
  <description>
</item>

В этих результатах RSS объем данных представляет собой просто сводку, но вы можете извлечь идентификатор вопроса, а затем использовать метод API get question, чтобы раскрыть все детали для каждого вопроса.

Вы можете использовать одинарные кавычки для запроса YQL, а затем помещать двойные кавычки в свой контент, и YQL будет передавать двойные кавычки с данными в ответы. Вот так:

select * from answers.search where query='"how to cook bacon"' and type='resolved'

выдает следующий запрос Ответам.

Другие вопросы по тегам