1
我正在嘗試在Racket中重新編寫一些Common Lisp網頁抓取代碼。Racket中的客戶端Cookie
在Common Lisp的,我張貼的登錄請求,並存儲Cookie的罐子隨後的GET:
(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))))
但是,我找不到球拍等效。 latest HTTP library完全沒有提及cookie,而AFAICT cookie library似乎更多地關於正確序列化和反序列化它們。
任何人都可以提出一種方法來重寫上述CL在球拍上,而不必實施一堆頭解析的東西?