我需要从用户那里获得Twitter好友。使用Twitter" 朋友 "我的意思是用户 A跟随用户B ,用户B跟随A 。 好吧,所以我的想法是得到一个用户A跟随的人员列表,如果他们跟着用户B,它会增加numFriends。 第一部分工作正常,但当我做第二个请求它崩溃并抛出一个丑陋的错误400' :( 我读到了关于twitter的限制以及所有这些,但第二次请求似乎很奇怪,所以我不知道它是否正常。
提前谢谢你,我是python和twitter api的菜鸟,我的母语不是英语,所以我真的希望一切都清楚。我将感谢任何有关此事的帮助。
以下是代码:)
def getNumFriends(user):
dataUser=0
numFriends=0
url ="https://api.twitter.com/1.1/friends/ids.json?cursor=-1&screen_name=%s&count=5000"%(user.screen_name)
auth = OAuth1(getConsumerKey(), getConsumerSecret(), getAccessToken(), getAccessTokenSecret())
response = requests.get(url, auth=auth)
if response.status_code == 200:
dataUser = response.json()
userIDs = dataUser['ids']
else:
print "Error code %s" %response.status_code
#Here comes the problem :S
for friend in userIDs:
url = "https://api.twitter.com/1.1/friendships/show.json?source_id=%s&target_screen_name=%s"%(friend, user)
response = requests.get(url, auth)
if response.status_code == 200:
dataCompare = response.json()
mutualfriends = dataCompare['relationship']['target']['followed_by']
if mutualfriends =='true':
numFriends=numFriends+1
else:
print "First request OK. Second request error code %s" %response.status_code
break
return numFriends
答案 0 :(得分:0)
你的代码很好,只有一些小错误。错误代码400,"错误的请求",并没有给你非常具体的信息,但它告诉你,你写url
的方式是错误的。
应该是:
url = "https://api.twitter.com/1.1/friendships/show.json?source_id=%s&target_screen_name=%s"%(friend, user.screen_name)
即它应该是user.screen_name
而不是用户。
此外,requests.get()
的第二个参数不是auth
,因此您应该始终指定参数的名称,
response = requests.get(url, auth=auth)
在你的第二次电话会议中并非如此。
顺便说一句,好奇,您没有使用像twython
这样的库的任何理由?
希望它有所帮助。
**评论后编辑:**
代码中还有一个小错误。请注意,您的变量mutualfriends
已经是布尔值,为了检查它的值,您可以这样做,
if mutualfriends:
...
BTW,检查变量的类型,
print(type(mutualfriends))