Twitter列表每位用户的会员数

时间:2009-12-15 00:04:22

标签: ruby rest twitter

Twitter APIfriends_countfollowers_count可用作users/showaccount/verify_credentials方法的缓存值。据我所知,确定用户所属列表数量的唯一方法是通过使用光标计算一个人的列表总数来调用GET list memberships和分页。成员。这是次优的;理想情况下,lists_count可以使用users/show

是否有更简单的方法来确定用户是使用Twitter API的成员的原始列表数?我错过了什么?

2 个答案:

答案 0 :(得分:2)

忘记API :),它几乎就像直接点击HTML网站一样容易。只需抓取xhtml,将其加载到您喜欢的Xml解析器中,并使用xpath查询来提取您想要的数据。

var client = new HttpClient();
client.DefaultHeaders.Authorization = Credential.CreateBasic("username", "password");

var response = client.Get("http://www.twitter.com/{username}/lists/memberships");
var doc = new XmlDocument();
doc.Load(response.Content.ReadAsXmlReader( new XmlReaderSettings() {ProhibitDtd = false}));

var nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("xh", "http://www.w3.org/1999/xhtml");
var xpathToCount = "//xh:li[@id='on_lists_tab']/xh:a[1]/xh:span";
var count = doc.SelectSingleNode(xpathToCount,nsmgr).InnerText;

答案 1 :(得分:1)

更新:Twitter将listed_count添加到用户有效负载。


向用户有效负载添加lists_count似乎是on the todo list

  

我们在待办事项清单上有这个。它需要相当广泛的异步片段失效,因此它不像将计数添加到有效载荷中那么简单。我们已经把它列在了清单上。

与此同时,Darrel's suggestion是唯一的直接方法,但语言及其库的简洁性很重要:

require 'rubygems'
require 'nokogiri'
require 'open-uri'

username = "twitterapi"
page = Nokogiri::HTML(open("http://twitter.com/#{username}"))
page.at_css("#lists_count").text.gsub(/\D/, "").to_i          # => 1299