客户端cookies在Racket中

客户端cookies在Racket中,cookies,racket,Cookies,Racket,我正在尝试在Racket中重新编写一些常见的Lisp网页抓取代码 在Common Lisp中,我发布一个登录请求,并存储cookie jar以供后续获取: (defun login (username password) "Logs in to www.example.com. Returns a cookie-jar containing authentication details." (let ((cookie-jar (make-instance 'drakma:cookie-

我正在尝试在Racket中重新编写一些常见的Lisp网页抓取代码

在Common Lisp中,我发布一个登录请求,并存储cookie jar以供后续获取:

(defun login (username password)
  "Logs in to www.example.com.  Returns a cookie-jar containing authentication details."
  (let ((cookie-jar (make-instance 'drakma:cookie-jar)))
    (drakma:http-request "http://www.example.com/login"
             :method :post
             :parameters `(("username" . ,username) ("password" . ,password))
             :cookie-jar cookie-jar)
    cookie-jar))

; snip

(defun get-page (page-num cookie-jar)
  "Downloads a potentially invalid HTML page containing data to scrape.  Returns a string containing the HTML."
  (let ((url (concatenate 'string "http://www.example.com/data/" (write-to-string page-num))))
    (let ((body (drakma:http-request url :cookie-jar cookie-jar)))
      (if (search "No data found." body)
    nil
  body))))
然而,我在球拍方面找不到一个等价物。完全没有提到cookies,而AFAICT似乎更多地是关于正确地序列化和反序列化它们


有人能提出一种在Racket中重新编写上述CL的方法,而不必执行大量的头解析工作吗?

Racket库中没有此类功能(在撰写本文时,2014年1月30日)

关于这一点,Racket的用户列表中已经有很多,并且有一个名为的第三方库来解决这个问题。在撰写本文时,该库尚未准备好生产,但正在积极开发中