Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Twitter API 401按IP[y]笔记本中的WOE ID调用趋势数据时出错_Python_Twitter_Oauth_Ipython Notebook_Anaconda - Fatal编程技术网

Python Twitter API 401按IP[y]笔记本中的WOE ID调用趋势数据时出错

Python Twitter API 401按IP[y]笔记本中的WOE ID调用趋势数据时出错,python,twitter,oauth,ipython-notebook,anaconda,Python,Twitter,Oauth,Ipython Notebook,Anaconda,我正在浏览《挖掘社交网络第二版》第一章中的步骤,并在调用Yahoo GeoPlanet的WOE ID系统检索趋势时不断收到一个错误。OAuth信息已用“*”编辑。没什么帮助 作为旁注,我最后不得不使用 from twitter import Twitter 而不是GitHub上的代码。不知道为什么,但导入Twitter(和导入Twitter)对我不起作用。已通过pip安装,但仍必须更改库调用 初始身份验证似乎工作正常: from twitter import Twitter consumer_

我正在浏览《挖掘社交网络第二版》第一章中的步骤,并在调用Yahoo GeoPlanet的WOE ID系统检索趋势时不断收到一个错误。OAuth信息已用“*”编辑。没什么帮助

作为旁注,我最后不得不使用

from twitter import Twitter
而不是GitHub上的代码。不知道为什么,但导入Twitter(和导入Twitter)对我不起作用。已通过pip安装,但仍必须更改库调用

初始身份验证似乎工作正常:

from twitter import Twitter
consumer_key = '*****'
consumer_secret = '*****'
oauth_token = '*****'
oauth_secret = '*****'

auth = twitter.oauth.OAuth(oauth_token, oauth_secret, consumer_key, consumer_secret)

twitter_api = twitter.Twitter(auth=auth)

print twitter_api

<twitter.api.Twitter object at 0x106******>
从twitter导入twitter
消费者密钥='*****'
消费者秘密='*****'
oauth_令牌='*****'
oauth_secret='*****'
auth=twitter.oauth.oauth(oauth_令牌、oauth_密钥、消费者_密钥、消费者_密钥)
twitter\u api=twitter.twitter(auth=auth)
打印twitter\u api
但调用API的尝试失败:

WORLD_WOE_ID = 1
US_WOE_ID = 23424977

world_trends = twitter_api.trends.place(_id=WORLD_WOE_ID)
us_trends = twitter_api.trends.place(_id=US_WOE_ID)

print world_trends
print
print us_trends

TwitterHTTPError                          Traceback (most recent call last)
<ipython-input-29-e2835459a5aa> in <module>()
     10 # to the URL itself as a special case keyword argument.
     11 
---> 12 world_trends = twitter_api.Twitter.trends.place(_id=WORLD_WOE_ID)
     13 us_trends = twitter_api.Twitter.trends.place(_id=US_WOE_ID)
     14 

/Users/User/anaconda/lib/python2.7/site-packages/twitter/api.pyc in __call__(self, **kwargs)
    243 
    244         req = urllib_request.Request(uriBase, body, headers)
--> 245         return self._handle_response(req, uri, arg_data, _timeout)
    246 
    247     def _handle_response(self, req, uri, arg_data, _timeout=None):

/Users/User/anaconda/lib/python2.7/site-packages/twitter/api.pyc in _handle_response(self, req, uri, arg_data, _timeout)
    274                 return []
    275             else:
--> 276                 raise TwitterHTTPError(e, uri, self.format, arg_data)
    277 
    278 

TwitterHTTPError: Twitter sent status 401 for URL: 1.1/Twitter/trends/place.json using parameters: 
(id=1&oauth_consumer_key=*****&oauth_nonce=*****&oauth_signature_method=HMAC-SHA1&oauth_timestamp=*****&oauth_token=*****&oauth_version=1.0&oauth_signature=*****)
details:{"errors":[{"message":"Could not authenticate you","code":32}]}
WORLD\u wood\u ID=1
美国灾难ID=23424977
world\u trends=twitter\u api.trends.place(\u id=world\u WOE\u id)
美国趋势=推特api.trends.place(\u id=us\u WOE\u id)
印刷世界潮流
打印
打印美国流行趋势
TwitterHTTPError回溯(最近一次调用上次)
在()
10#将URL本身作为特例关键字参数。
11
--->12 world\u trends=twitter\u api.twitter.trends.place(\u id=world\u wore\u id)
13美国趋势=推特api.twitter.trends.place(\u id=us\u WOE\u id)
14
/Users/User/anaconda/lib/python2.7/site-packages/twitter/api.pyc in___调用(self,**kwargs)
243
244 req=urllib_request.request(uriBase、body、headers)
-->245返回自身句柄响应(请求、uri、参数数据、超时)
246
247定义句柄响应(self、req、uri、arg数据,_timeout=None):
/响应中的Users/User/anaconda/lib/python2.7/site-packages/twitter/api.pyc(self、req、uri、arg\u数据、\u超时)
274返回[]
275其他:
-->276 raise TwitterHTTPError(e、uri、self.format、arg_数据)
277
278
TwitterHTTPError:Twitter使用以下参数发送URL:1.1/Twitter/trends/place.json的状态401:
(id=1&oauth_使用者密钥=******&oauth_当前=******&oauth_签名方法=HMAC-SHA1&oauth_时间戳=******&oauth_令牌=******&oauth_版本=1.0&oauth_签名=****)
详细信息:{“错误”:[{“消息”:“无法验证您的身份”,“代码”:32}]}

为什么我能够成功地进行身份验证,但无法拨打电话?

实例化Twitter对象不会对您进行身份验证;它只存储凭据,直到您实际尝试使用它们进行API调用为止。在收到错误之前,不会尝试身份验证


仔细检查您的OAuth凭据是否正确,并确保您的系统日期和时间设置正确,因为如果时间过多,可能会导致握手问题。您可以通过在“您的访问令牌”标题下的应用程序API密钥页上登录,为您的帐户重新生成OAuth令牌。

用户错误。典型的我没有按照书中的说明去做,而是有点走火入魔,手动安装IPython笔记本,试着自己运行。如果您正在阅读本书,请确保您非常仔细地遵循以下(以及所有)步骤:

  • 安装VirtualBox
  • 安置流浪汉
  • 复制挖掘社交网站第二版的GitHub存储库
  • 使用git init{copied git address}克隆到您的计算机
  • “漫游”书本文件夹(这可能需要一段时间)
  • 通过
    http://localhost:8888
  • 进入第1章-挖掘Twitter
  • 使用本书作者(Matthew A.Russell)提供的代码
  • 检索Twitter API密钥
  • 即插即用
  • 现在,为什么我不能手动输入这些数据,我仍然不能完全确定。然而,IP[y]笔记本的使用可能需要一个非常具体的安装过程,以确保ipython及其相应的库已正确安装并可用。这似乎特别可能,因为我在调用“twitter”库/包时不再遇到问题

    链接到挖掘社交网站,第二版的
    GitHub存储库:
    Vimeo通道(非常有用):


    希望这对其他人有帮助。

    谢谢。很高兴了解实例化。我不知道。有趣的是,当我重新生成密钥并替换我拥有的密钥时,它突然不喜欢开始时从twitter导入的twitter位。最后将其更改为导入twitter,并且在实例化部分工作良好。系统运行时间也很好。然而,我仍然获得401身份。