ValueError:使用Twitter流API的查询字符串中的字符无效

时间:2013-09-21 01:06:47

标签: python twitter

我得到了

ValueError: Invalid characters in query string
当我使用twitter流API进行以下查询时出现

错误。

search_query = u"emmy awards, ios 7"
streaming_url = u"https://stream.twitter.com/1.1/statuses/filter.json?track={}".format(search_query)

但是,如果我只为ios 7之类的track参数提供一个参数,一切都会好起来的。我对参数进行编码的方式有问题吗?因为根据twitter API documentation,它确实支持track参数的逗号分隔参数列表。

1 个答案:

答案 0 :(得分:1)

您可能需要对查询进行编码:

https://stream.twitter.com/1.1/statuses/filter.json?track=emmy awards, ios 7

为:

https://stream.twitter.com/1.1/statuses/filter.json?track=emmy%20awards%2C%20ios%207

您可以使用urllib.quote

In [1]: import urllib

In [2]: search_query = u"emmy awards, ios 7"

In [3]: urllib.quote(search_query)
Out[3]: 'emmy%20awards%2C%20ios%207'

In [4]: streaming_url = u"https://stream.twitter.com/1.1/statuses/filter.json?rack={}".format(urllib.quote(search_query))

In [5]: streaming_url
Out[5]: u'https://stream.twitter.com/1.1/statuses/filter.json?rack=emmy%20awards%2C%20ios%207'

In [6]: