Newsgroup: it.discussioni.ingegneria.civile
Titolo: cerco un volenteroso abile in matlab per un programmino -- magari con  ricompensa!

ho un programmino matlab che fa ricerca di google scholar
http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=9710&objectType=file
che poi ti allego anche di seguito. in pratica calcola degli indici
per scienziati in funzione del nome e basta. mi servirebbe
personalizzarlo un minimo, per farlo girare a partire da una lista di
nomi, e magari la lista potrebbe essere un file excel, che poi a sua
volta si puo' scaricare dal sito del MIUR come elenco docenti
http://cercauniversita.cineca.it/php5/docenti/cerca.php
Magari si fa un programma ancora piu' generale che in funzione della
schermata di quest'ultima ricerca, fa direttamente
il file excel con i risultati! magari se lo mettiamo in un sito
diventa quotatissimo e facciamo pubblicità o troviamo
chi ce lo finanzia.
Ciao, MC. Segue listato, che trovate anche sul link di sopra.
function [h ncited]=hindex(name,varargin)
%HINDEX Computes the h-index of an author from Google Scholar.
% HINDEX(AUTHORNAME) computes the h-index of the author AUTHORNAME, on
% the basis of the publications referenced by Google Scholar
% (
http://scholar.google.com
). An active internet connection is
required.
%
% The index h is defined as "the number of papers with citation number
% higher or equal to h", and has been proposed by J.E. Hirsch to
% "characterize the scientific output of a researcher" [Proc. Nat.
Acad.
% Sci. 46, 16569 (2005)]. Note that the number of citations referenced
by
% Google Scholar may be lower than the actual one (old publications
are
% not available online).
%
% The string AUTHORNAME should contain the last name, or the
initial(s)
% of the first name(s) followed by the last name, of the author (eg,
% 'A. Einstein'). Do not put the initial(s) after the last name. The
scan
% is not case sensitive. Points (.) and spaces ( ) are not taken into
% account. See Google Scholar Help for more details about the syntax.
%
% Example: HINDEX('A. Einstein') returns 43 (ie: 43 papers by A.
Einstein
% have been cited at least 43 times, according to Google Scholar).
%
% H = HINDEX(AUTHORNAME) only returns the h-index, without display.
%
% HINDEX(AUTHORNAME, 'Property1',...) specifies the properties:
% 'verb' also displays the list of papers returned by Google
% Scholar, rejecting the ones for which AUTHORNAME is not
% one of the authors.
% 'plot' also plots the 'Cited by' number as a function of the
% paper rank.
%
% HINDEX should be used with care. Many biases exist (homonyms, errors
% from Google Scholar, old papers are not available online, but
% unpublished or draft papers are...) For the true h-index of an
author,
% it is recommended to use an official citation index database (eg,
ISI).
% Use HINDEX just for fun.
%
% Remark: Massive usage of hindex may be considered by the Google
% Scholar server as a spam attack, and may invalidate the IP number of
% your computer. If this happens, you get an 'Internet connection
failed'
% error message -- but you still can use Google Scholar from a web
% browser.
%
% F. Moisy, 
mo...@fast.u-psud.fr
% Revision: 1.11, Date: 10-jul-2006
% History:
% 22-jan-2006: v1.00-1.10, first versions.
% 07-jul-2006: v1.11, check ML version; help text improved; use
properties
% check the matlab version:
if str2double(version('-release'))<14,
  error('hindex requires Matlab 7 (R14) or higher.');
end;
error(nargchk(1,2,nargin));
% clean the input text:
name=lower(name);
name=strrep(name,'.',' ');
name=strrep(name,' ',' ');
ncit=0; % total number of citation
ncitinthispage=0; % number of citation in the current page
ncited=[];
seenextpage=1;
numpage=0;
while seenextpage,
  numpage=numpage+1;
  % find the web page:
  pagename=['
http://scholar.google.com/scholar?num=100&start=
'
num2str(100*(numpage-1)) '&q=%22author%3A' strrep(name,'
','+author%3A') '%22'];
  if nargout==0,
      disp(['Scanning: ' pagename]);
  end;
  [s, res]=urlread(pagename);
  if ~res,
      error('Internet connection failed.');
  end;
  rem=s; % remainder of the string
  while strfind(rem,'Cited by '),
      pauth1 = strfind(rem,'<font color=green>')+18; pauth1=pauth1(1);
      pauth2 =
strfind(rem(pauth1:min(end,(pauth1+500))),'</font>')-1;
pauth2=pauth2(1);
      authstring = lower(rem(pauth1:(pauth1+pauth2-1))); % list of
authors of the paper
      authstring = strrep(authstring,'<b>','');
      authstring = strrep(authstring,'</b>','');
      authstring = strrep(authstring,'…','...');
      % check that the required name is indeed in the author list.
      paperok=0;
      pos=strfind(authstring,name);
      if length(pos),
          pos=pos(1);
          paperok=1;
          if pos>1,
              % check for wrong initials (eg, 'ga einstein' should not
              % match for 'a einstein')
              pl=authstring(pos-1);
              if ((pl>='a')&&(pl<='z'))||(pl=='-'),
                  paperok=0;
              end;
          end;
          if pos<(length(authstring)-length(name)),
              % check for wrong 'suffix' (eg, 'einstein-joliot' should
not
              % match for 'einstein')
              nl=authstring(pos+length(name));
              if ((nl>='a')&&(nl<='z'))||(nl=='-'),
                  paperok=0;
              end;
          end;
      end;
      if paperok, % if the required name is indeed in the author list
          ncit = ncit+1;
          ncitinthispage = ncitinthispage +1;
          p=strfind(rem,'Cited by ')+9; p=p(1);
          substr=rem(p:(p+5));
          pend=strfind(substr,'<'); pend=pend(1);
          ncited(ncit)=str2double(substr(1:(pend-1)));
          rem=rem((p+2):end);
          if any(strncmpi(varargin,'verb',1))
              disp(['#' num2str(ncit) ': (' num2str(ncited(ncit)) '),
'
authstring]);
          end;
      else
          if any(strncmpi(varargin,'verb',1))
              disp(['rejected: ' authstring]);
          end;
          p=strfind(rem,'Cited by ')+9; p=p(1);
          rem=rem((p+2):end);
      end;
  end;
  if any(strncmpi(varargin,'verb',1))
      disp(' ');
  end;
  if ncit==0,
      seenextpage=0;
  else
      if ((ncited(ncit)<2)||(~length(findstr(rem,'<span
class=b>Next</span>')))),
          seenextpage=0;
      end;
  end;
end; % while seenextpage
if length(ncited),
  % sort the list (it should be sorted, but sometimes GS produces
unsorted results)
  ncited=sort(ncited); ncited=ncited(ncit:-1:1);
  % computes the H-factor:
  h=sum(ncited>=(1:ncit));
  % plot the 'Cited by' number:
  if any(strncmpi(varargin,'plot',1))
      loglog(1:ncit,ncited,'.-',1:ncit,1:ncit,'--',h,h,'o');
      xlabel('Paper rank'); ylabel('Number of citations');
      title(['h-index plot for ''' name ''' (h=' num2str(h) ')']);
  end;
  % some displays if no output argument:
  if nargout==0,
      disp(['Number of cited papers: ' num2str(length(ncited))]);
      disp(['''Cited by'' list: ' num2str(ncited)]);
      disp(['Total number of citations: ' num2str(sum(ncited))]);
      disp(['h-index = ' num2str(h)]);
      clear h;
  end;
else
  h=0;
  if nargout==0,
      disp('No result found');
      clear h;
  end;
end;
--
Prof. Ing. Michele Ciavarella
Visiting Professor LMS, CNRS UMR 7649 ---- Ecole Polytechnique
91128 Palaiseau cedex France
ph: 
+33 1 69 33 57 12
 Fax : 
+33 1 69 33 57 06
 (travail) ph +33 1 78 09
2642 (home)
mob. 
+33 6 59 59 9690
mci...@lms.polytechnique.fr
permanent adress:
Prof. Michele Ciavarella
Politecnico di BARI
Viale Gentile 182 - 70125 BARI - ITALY
tel. 
+39 080 5962811
fax. 
+39 080 5962777
mci...@poliba.it
, 
ciava...@libero.it
web: 
www.micheleciavarella.it

intanto sono entrato in contatto con l'autore dello script matlab, e
ci sono 2 novità:-
1) il programmino ha problemi con Matlab 7.x (with 1<x<6), the urlread
function no longer works for url addresses in the form "scholar?
num=100&hl=..."  l'autore mi ha promesso di verificare.
2) per generalizzare per lista autori, per ora mi suggeriva di mettere
un ciclo
name={'a einstein','f moisy','c bruni'};
for n=1:length(name),
    h(n)=hindex(name{n});
    disp([name{n} ' ' num2str(h(n))]);
end
ma ovviamente dobbiamo ancora generalizzare per es.  link con
excel ... si puo' compilare lo script matlab per renderlo dentro
Excel?
Ciao, MC