【问题标题】:Code for retrieving followers from Twitter API results in all followers having the same ID从 Twitter API 检索关注者的代码导致所有关注者具有相同的 ID
【发布时间】:2023-03-20 17:18:01
【问题描述】:

我想抓取 Twitter API 以检索特定用户的关注者 ID,以便映射他们的连接。

当我运行下面的代码时,每个用户的followerIds 都是相同的,这是不对的:

    try:
        import json
    except ImportError:
        import simplejson as json
        import urllib2
        import urllib
        import codecs
        import time
        import datetime
        import os
        import random
        import time
        import tweepy
    from tweepy.parsers import RawParser
        import sys

    fhLog = codecs.open("LOG.txt",'a','UTF-8')
    def logPrint(s):
    fhLog.write("%s\n"%s)
    print s

    #List of screennames of users whose followers we want to get
    users =["_AReichert",
    "_CindyWallace_",
    "_MahmoudAbdelal",
    "1939Ford9N",
    "1FAMILY2MAN",
    "8Amber8",
    "AboutTeaching",
    "AcamorAcademy",
    "acraftymom",
    "ActivNews",
    "ActuVideosPub",
    "ad_jonez",
    "adamsteaching",
    "ADHD_HELP",
    "AIHEHistory",
    "ajpodchaski",
    "ak2mn",
    "AkaMsCrowley",
    "AlanAwstyn",
    "albertateachers"]


     # == OAuth Authentication ==


    # The consumer keys can be found on your application's Details
    # page located at https://dev.twitter.com/apps (under "OAuth settings")
     consumer_key=""
     consumer_secret=""

    # After the step above, you will be redirected to your app's page.
    # Create an access token under the the "Your access token" section
    access_token=""
    access_token_secret=""


    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)

    rawParser = RawParser()
    api = tweepy.API(auth_handler=auth, parser=rawParser)


    #Will store ids of followers for each user in the user_output directory
    os.system("mkdir -p user_output") #Create directory if it does not exist

    userCnt=0
    fhOverall=None
    for user in users:
         userCnt+=1
         print("Getting user %s of %s"%(userCnt,len(users)))
         count=1
        nCursor=-1#First page
        while count>0:
            id_str=user

            try:
               fh=open("user_output/"+str(id_str)+"_" + str(count) + ".json","r")
               result=fh.read()
               fh.close()
               wait=0
            except: 
               result=api.followers_ids(count=5000,user_id=id_str,cursor=nCursor)
               fh=open("user_output/"+str(id_str)+"_" + str(count) + ".json","w")
               fh.write(result)
               fh.close()
               wait=60


            result=json.loads(result)
            nCursor=result["next_cursor_str"]
            if nCursor=="0":
                count=-1
                nCursor=None
            else:
                count+=1
                print("Another page to get")

            time.sleep(wait)



    logPrint("\nDONE! Completed Successfully")
    fhLog.close()    

我该如何解决这个问题?

【问题讨论】:

  • 首先,您似乎从未分配过result 变量。第一次在您的代码中使用它是result = json.loads(result)
  • 您好,感谢您的回复。我意识到我不小心遗漏了定义result的代码,它是id_str=user之后的try/except循环。

标签: python twitter


【解决方案1】:

这可能无法回答您的问题,但您的导入中存在缩进问题... 试试这个:

try:
  import json
except ImportError:
  import simplejson as json
import urllib2
import urllib
import codecs
import time
import datetime
import os
import random
import time
import tweepy
from tweepy.parsers import RawParser
import sys

另外,您可以直接使用 os 模块创建目录。试试这个:

if not os.path.exists("./user_output"):
  os.path.makedirs("./user_output")

最后,您执行 time.sleep(wait) 但可能未设置等待。试试这个:

if  api.followers_ids(count=5000,user_id=id_str,cursor=nCursor):
  time.sleep(60)

【讨论】:

  • 感谢您的回复,您指出的问题我已修复,但不幸的是它仍然无法正常工作。我在原帖中忘记提到的一件事是,每次我运行程序时,我都会得到一个不同的公共追随者 ID……每个用户都有相同的追随者 ID,但每次运行程序时重复的追随者 ID 都是不同的.我不知道这是否有帮助。再次感谢!
【解决方案2】:

tweepy 的文档表明 api.followers_ids 接受的唯一参数是 id、user_id 或 screen_name,而不是您传递的三个参数。

http://pythonhosted.org/tweepy/html/api.html#api-reference

您还需要将返回的值分配给结果变量。去掉 if 语句并把它放在它的位置。

result=api.followers_ids(id_str)
wait=60

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-07
    • 2013-07-01
    • 1970-01-01
    • 2013-06-30
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多