#lang racket (require net/url) (define *yaho-url* "http://search.yahoo.com/search?p=~a&b=~a") (define *current-page* 0) (define *current-query* "") (define request (compose port->string get-pure-port string->url)) ;;strip html tags (define (remove-tags text) (regexp-replace* #px"<[^<]+?>" text "")) ;;search, parse and print (define (search-yahoo query) (unless (string=? *current-query* query) ;different query, go back to page 1 (set! *current-query* query) (set! *current-page* 0)) (let* ([current-page (number->string (add1 (* 10 *current-page*)))] [html (request (format *yaho-url* query current-page))] [results (regexp-match* #px"lass=\"yschttl spt\" href=\".+?\">(.+?)(.+?).+?