如何使用Yahoo的Answer API转义YQL中的字符?

时间:2012-01-21 08:15:13

标签: escaping yahoo yql

我通过YQL使用Yahoo的Answer API。我的查询是“如何烹饪培根”,我需要包含双引号,因为这完全匹配,您可以看到基于网络的搜索结果不同:

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

VS

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 个答案:

答案 0 :(得分:1)

我认为Josh的回答是在通过YQL时引用或转义Answers查询的原始问题的正确轨道。但是,进一步玩这个,我认为真正的问题是试图通过Answers API复制Answers UI结果(反过来又由YQL读取)。

Answers API相比,我无法匹配Answers website的同一组结果。我认为不同之处在于排名排序顺序,但似乎API中没有。

作为替代方案,您可以使用Answers RSS提要并通过YQL处理它们:

  1. 转到answers.yahoo.com并输入您的示例搜索"how to cook bacon"
  2. 在结果页面上,抓取左侧导航(example
  3. 上的RSS链接
  4. 使用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'
  5. 您应该得到类似于以下第一个结果的结果,它似乎与UI中显示的顺序匹配:

    <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结果中,数据量只是一个摘要,但您可以提取问题ID,然后使用get question API method来提取每个问题的所有详细信息。

答案 1 :(得分:0)

您可以在YQL查询中使用单引号,然后在内容中加上双引号,YQL会将带有数据的双引号传递给Answers。像这样:

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

Answers提出以下请求。