Как экранировать символы в 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:
- Перейдите на answers.yahoo.com и введите пример поиска "как приготовить бекон".
- На странице результатов выберите ссылку RSS в левой части панели навигации ( пример).
- Используйте ссылку 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'
выдает следующий запрос Ответам.