1
라켓에 Common Lisp 웹 스크래핑 코드를 다시 작성하려고합니다. 커먼 리스프에서 라켓의 클라이언트 측 쿠키
, 나는 로그인 요청을 게시, 이후의 쿠키 항아리를 저장하고있어 가져옵니다(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은 쿠키에 대해 전혀 언급하지 않으며, AFAICT cookie library은 쿠키를 올바르게 serialize하고 역 직렬화하는 방법에 대한 것 같습니다.
누구나 헤더 파싱 내용을 구현하지 않고도 위의 CL을 라켓에 다시 작성하는 방법을 제안 할 수 있습니까?