Twitter API有friends_count
和followers_count
可用作users/show
或account/verify_credentials
方法的缓存值。据我所知,确定用户所属列表数量的唯一方法是通过使用光标计算一个人的列表总数来调用GET list memberships和分页。成员。这是次优的;理想情况下,lists_count
可以使用users/show
。
是否有更简单的方法来确定用户是使用Twitter API的成员的原始列表数?我错过了什么?
答案 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