【问题标题】:How this ruby script using twitter api scrapes user ids?这个使用 twitter api 的 ruby​​ 脚本如何抓取用户 ID?
【发布时间】:2017-01-28 20:16:17
【问题描述】:

您好,我已经修改了这个旧代码来抓取 Twitter 用户名,但由于某种原因,它也会抓取用户 ID。我不明白它是如何做到的,因为我在代码“user_id”中看不到任何地方,根据 twitter api 文档,您应该使用它来获取用户 ID。 这是代码

def my_usernames
  "UHDTelevisions"
end

def my_userinfo(names)
  @client.followers(names)
end

def my_userhash(users)
  userhash = {}
  users.each do |user|
    userhash[user.screen_name] = user.id.to_s
  end
  return userhash
end

def my_users
  my_userhash(my_userinfo(my_usernames))
end

def my_csv(my_users)
  CSV.open('./my_users.csv','a+') do |csv|
    my_users.each do |k,v|
    csv << [k,v]
  end
end

【问题讨论】:

    标签: ruby api twitter


    【解决方案1】:

    这是构建哈希 {name ⇒ id} 的行:

    userhash[user.screen_name] = user.id.to_s
    

    这里我们已经获得了user 对象,其中包含id 以及其他用户参数。要返回名称列表,可以简单地:

    @client.followers("UHDTelevisions").map &:screen_name
    

    而不是上面的所有代码。

    【讨论】:

    • 这个我不太明白,这么短的代码怎么把结果保存到csv文件?
    • 要将结果保存到文件中,该行会长一点:File.write('./my_users.csv', @client.followers("UHDTelevisions").map(&amp;:screen_name).join(','))
    • 我刚刚发现我不能使用client.followers,但我必须使用client.follower_ids,但是当我在你的代码中尝试时,我收到错误,它无法识别screen_name
    • 当我删除了所有不必要的内容时,代码如下所示:print @client.follower_ids("detnewsRodBeard") 如果 ID 只是这样,我得到的是:Twitter::Cursor:0x3203220
    【解决方案2】:

    如果您想保持并行结构,可以将其更改为具有 my_userarray(因为您只需要值,而不是键值对,我假设)

    def my_userarray(users)
      userarray = []
      users.each do |user|
        userarray << user.screen_name
      end
      return userarray
    end
    

    当然,您还需要更新 my_users 方法,以反映 my_userarray 的新方法名称

    【讨论】:

    • 非常感谢,我在代码中发现了错误,我需要使用 client.follower_ids 而不是 client.followers,但是当我尝试使用此代码时,收到错误,它无法识别 screen_name 以及何时我删除它,我得到各种其他错误。
    猜你喜欢
    • 2017-06-05
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2019-03-28
    • 2016-10-14
    • 2021-03-02
    相关资源
    最近更新 更多