Riamus2 beat me to it, but here's another approach (parsing all the data, no global variables) - maybe it's of use.
Code:
on *:TEXT:!player*:#: {
  if ($sock(player)) .sockclose player
  sockopen player herald.uthgard-server.net 80
  ; you can mark the socket instead of putting $chan and $nick into global variables
  sockmark player $chan $nick
}

on *:SOCKOPEN:player: {
  sockwrite -nt $sockname GET /herald.php?view=stats&p1=player&p2=Player&p3=DESC&p5=Player&p6=Rotbart HTTP/1.1
  sockwrite -nt $sockname Host: herald.uthgard-server.net
  sockwrite -nt $sockname $crlf
}

on *:SOCKREAD:player: {
  var %read

  ; goto-loop of sockread
  :read
  sockread %read

  ; if there was data left to read and the data matched " <tr class="TBLmid"><td>SOMETHING HERE</td><td> "
  ; then set a local variable named "%SOMETHING_HERE" (spaces replaced with underscores)
  ; which holds the data of $remove($nohtml(sockread),SOMETHING HERE)
  if ($sockbr) {
    if ($regex(read,%read,/\<tr class="TBLmid"><td>([^<]+)<\/td><td>/)) { set -l % $+ $replace($regml(read,1),$chr(32),_) $remove($nohtml(%read),$regml(read,1)) }
    goto read
  }

  ; this means you can now use EACH of
  ; %player %guild %class %race %level %realmrank %dragon_kills %legion_kills %kills %realmpoints %last_week _RPs

  ; convert sockmark back to local variables 
  var %chan = $gettok($sock($sockname).mark,1,32), %nick = $gettok($sock($sockname).mark,2,32)

  msg %chan %player < $+ %guild $+ > Rank: %realmrank Pts: %realmpoints
  sockclose $sockname
}

alias -l nohtml {
  var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&nbsp;,$chr(9))
  return %x
}