(defparameter *rdsystems* (make-hash-table)) (defun get-rdsystems () (let ((products (loop for letter across "0ABCDEFGHIJKLMNOPQQRSTUVXYZ" for letterpage = (get-url (format nil "http://www.rndsystems.com/molecule_letter.aspx?l=~c" letter)) when (stringp letterpage) append (mapcar 'car (all-matches letterpage "molecule_detail\\.aspx\\?m=(\\d+)" 1)) ))) (loop for product in products for productpage = (unless (gethash (parse-integer product) *rdsystems*) (get-url (format nil "http://www.rndsystems.com/product_results.aspx?m=~a&c=0" product))) do (sleep .002) (when (stringp productpage) (setf (gethash (parse-integer product) *rdsystems*) (all-matches productpage "