繁体   English   中英

Python Twitter API尝试检索tweet但错误:AttributeError:'int'对象没有属性'encode'

[英]Python Twitter API trying to retrieve tweet but error: AttributeError: 'int' object has no attribute 'encode'

为什么我得到一个AttributeError:'int'对象没有属性'encode'? 我正在尝试使用Python上的Twitter API检索推文。 完全追溯到这里:

Traceback (most recent call last):
  File "C:/Python27/lol.py", line 34, in <module>
    headers = req.to_header()
  File "build\bdist.win-amd64\egg\oauth2\__init__.py", line 398, in to_header
    params_header = ', '.join(header_params)
  File "build\bdist.win-amd64\egg\oauth2\__init__.py", line 397, in <genexpr>
    header_params = ('%s="%s"' % (k, v) for k, v in stringy_params)
  File "build\bdist.win-amd64\egg\oauth2\__init__.py", line 396, in <genexpr>
    stringy_params = ((k, escape(v)) for k, v in oauth_params)
  File "build\bdist.win-amd64\egg\oauth2\__init__.py", line 163, in escape
    s = s.encode('utf-8')
AttributeError: 'int' object has no attribute 'encode'

下面是我正在使用的代码。

import oauth2
import time
import urllib2
import json
url1="https://api.twitter.com/1.1/search/tweets.json"
params = {
    "oauth_version": "1.9.0",
    "oauth_nonce": oauth2.generate_nonce(),
    "oauth_timestamp": int(time.time())
    }

consumer = oauth2.Consumer(key="*********", secret="*********")
token = oauth2.Token(key="*********", secret="*********")

params["oauth_consumer_key"] = consumer.key
params["oauth_token"] = token.key

for i in range(1):
    url = url1
    req = oauth2.Request(method="GET", url=url, parameters=params)
    signature_method = oauth2.SignatureMethod_HMAC_SHA1()
    req.sign_request(signature_method, consumer, token)
    headers = req.to_url()
    print headers
    print url

for i in range(1):
    url = url1
    params["q"] = "pictorial"
    params["count"] = 2
    req = oauth2.Request(method="GET", url=url, parameters=params)
    signature_method = oauth2.SignatureMethod_HMAC_SHA1()
    req.sign_request(signature_method, consumer, token)
    headers = req.to_header()
    url = req.to_url()
    response = urllib2.Request(url)
    data = json.load(urllib2.urlopen(response))
    if data["statuses"] == []:
        print "end of data"
        break
    else:
        print data

如果我将int(time.time())更改为str(time.time()),我会收到以下错误:

Traceback (most recent call last):
  File "C:/Python27/lol.py", line 37, in <module>
    data = json.load(urllib2.urlopen(response))
  File "C:\Python27\lib\urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Python27\lib\urllib2.py", line 437, in open
    response = meth(req, response)
  File "C:\Python27\lib\urllib2.py", line 550, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python27\lib\urllib2.py", line 475, in error
    return self._call_chain(*args)
  File "C:\Python27\lib\urllib2.py", line 409, in _call_chain
    result = func(*args)
  File "C:\Python27\lib\urllib2.py", line 558, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 400: Bad Request
"oauth_timestamp": int(time.time())

这里使用int ,但该字段必须是字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM