Just an addition to show the $bfind loop I have in mind. Dumping all the data first, like:
Code:
on *:sockread:imdb: {
  :read
  sockread -fn &imdbtemp
  if ($sockbr) {
    bwrite temp.txt -1 -1 &imdbtemp
    goto read
  }
}

Now parsing that data in the sockclose event:
Code:
 
on *:sockclose:imdb:{
  if ($isfile(temp.txt)) { 
    ; read whole page into binvar
    bread temp.txt 0 $file(temp.txt).size &imdb

    ;    ECHO -a binvar has $bvar(&imdb,0) bytes

    ; relevant line starts with:       [SPACE]<p><b>
    ; set pointer at the start of the relevant line. set end of that line
    var %pos = $bfind(&imdb,1,$chr(32) $+ <p><b>).text, %end = $bfind(&imdb,%pos,0)

    ;    ECHO -a linestart +300: $bvar(&imdb,%pos,300).text
    ;    ECHO -a lineend -300: $bvar(&imdb,$calc(%end -300),300).text

    ; set indicating "start text" for all the chunks-to-get:       onclick="(new Image()).src='/rg/find-title-
    var %find = onclick="(new Image()).src='/rg/find-title-

    ; set regex for matching and capturing
    var %reg = /\/find-title-\d+\/title_(\w+)\/images\/b\.gif\?link=\/title\/tt(\d+)\/';">(.+)<\/a>/

    ; this reg is just an alternative to include "aka, year" etc.
    var %reg2 = /\/find-title-\d+\/title_(\w+)\/images\/b\.gif\?link=\/title\/tt(\d+)\/';">(.+)/

    ; loop all occurrences of %find, up to the end of the relevant line
    while ((%pos < %end) && ($bfind(&imdb,%pos,%find).text)) {

      ; set pointer to the "end marker of this chunk":       </td> 
      var %pos = $bfind(&imdb,$v1,</td>).text

      ; current chunk
      var %chunk = $bvar(&imdb,$v1,$calc(%pos - $v1)).text

      ;    ECHO -a current chunk: %chunk

      if ($regex(%chunk,%reg)) { ECHO -a Type: $regml(1) Nr: $regml(2) Text: $regml(3) }

      ;    else ECHO -a skipped a chunk
    }

    ; remove tempfile
    .remove temp.txt
  }
}


...Lacks error handling etc smile
You have all the matches with $regml(1) = "type" (exact/popular/substring/aprox), $regml(2) = "ttNr." and $regml(3) = "Title".

Note that if there's only one exact match, imdb will forward to that title. You can capture this ttNr. in the sockread event:
/^Set-Cookie: fd=tt(\d+)\// where $regml(1) is the ttNr. And if there's no match at all, you'll have a "<b>No Matches.</b>" somewhere in the sockread.

In the code above, the "find line's start and end" stuff is what I'd like to avoid - yet I don't manage to put only that single, lengthy line directly into a binvar/bwrite it (for an early sockclose and less data to parse).
The biggest downside regarding performance is /bwriting the complete sockread into a tempfile fist. Will throwing "the line" out into a separate binvar speed it up (?) I doubt...