As asked by Vieniava in "How to make a list of user's reputation?", some of us came up with interesting ideas on how to fill an updated list with the reputation scores of the contributors to Answers.
I took the initiative to compile a public list of users with meta info:
- position (desc ordering by reputation)
- id
- nickname (truncated to fit the page)
- reputation
- # of comments
- # of questions asked
- % accept rate
- # of posts answered
- # of accepted answers
The code used to compile the list is available at the bottom.
EDIT
TMW team implemented a page with the metascores: http://www.mathworks.com/matlabcentral/answers/contributors
Please refer to it and congrats to the team!
Use this function to retrieve info from the link above:
function [metainfo, elapsedTime] = metainfo(type,order)% METAINFO - Retrieve metainfo on contributors to www.matworks.com/.../answers
%
% METAINFO Retrieve data sorted by reputation in descending order
%% METAINFO(TYPE,ORDER) Specify TYPE and sorting ORDER as
% type : 'reputation'
% 'questions'
% 'answered'
% 'accepted'
%% order: 'asc'
% 'desc'
%
% Examples:
%% % Standard call (rep, disc)
% info = metainfo;
%
% % Sort by question answered in descending order
% info = metainfo('an','d');
%% See also: URLREAD, REGEXP
% Author: Oleg Komarov (oleg.komarov@hotmail.it)
% Tested on R14SP3 (7.1) and on R2009b. In-between compatibility is assumed.
% 28 feb 2011 - Created
tic% Check # inputs
error(nargchk(0,2,nargin))% Retrieve inputs
if nargin == 0 type = 'reputation'; order = 'desc';endif ~exist(type,'var') sortTypes = {'reputation','questions','answered','accepted'}; type = sortTypes{strncmp(type,sortTypes,numel(type))}; order = 'desc';end if ~exist(order,'var') orderTypes = {'asc','desc'}; type = orderTypes{strncmp(order,orderTypes,numel(order))};end % Build url string
url = ['http://www.mathworks.com/matlabcentral/answers/contributors?'... 'dir=' order '&sort=' type '&page='];% First read
[page, ok] = urlread([url '1']);% Catch number of pages to read
if ok totcon = regexp(page,'>1 - 50 of (\d+)','tokens'); totcon = dataread('string',totcon{1}{1},'%d'); nPages = ceil(totcon/50);else error('Cannot read ".../contributors?page=1"')end% Loop over contributors pages
metainfo = cell(totcon,7);metainfo(1:end,1) = num2cell(1:size(metainfo,1));for p = 1:nPages if ok endpos = 50*p; % Id, Rep
expr = '><a href="\/matlabcentral\/answers\/contributors\/(\d+)'; data = regexp(page, expr,'tokens'); if 50*p > totcon; endpos = 50*(p-1)+numel(data); end metainfo(1+(p-1)*50:endpos,2) = [data{:}]; % Nickname
expr = ['"Reputation: (\d+)">([\w\ ' reshape([repmat(92,1,137);33:59,61:64,91:97,123:126,161:255],1,[]) ']+)</a></h2>']; data = regexp(page, expr,'tokens'); metainfo(1+(p-1)*50:endpos,[4,3]) = cat(1,data{:}); % Qcount, Ans, Acc
data = regexp(page, '<span >(\d+)</span>[A-z<>"-\s\/]+','tokens'); metainfo(1+(p-1)*50:endpos,5:7) = reshape(cat(1,data{:}),3,[]).'; else error('Metainfo import stopped. \nCannot read ".../contributors?page=%d"',p) end [page, ok] = urlread([url sprintf('%d',p+1)]);end% Convert to doubles
metainfo(:,[2,4:7]) = cellfun(@str2double,metainfo(:,[2,4:7]),'un',false);elapsedTime = toc;
Best Answer