Cookielib는 쿠키를 자동으로 처리하는 모듈입니다. 크롤러와 같은 기술을 사용할 때 쿠키를 저장해야 하는 경우, cookielib를 사용하면 절반의 노력으로 두 배의 결과를 얻을 수 있습니다! 그의 가장 일반적인 파트너 모듈은 Python의 urllib 및 request입니다.
핵심수업
1.쿠키
이 클래스는 Netscape 및 RFC 2965 쿠키에서 정의한 쿠키 표준을 구현하며 기본적으로 특정 쿠키 데이터 조각으로 이해될 수 있습니다.
코드의 일부는 다음과 같습니다. 많은 속성이 친숙해 보입니까?
self.domain_initial_dot = domain_initial_dot self.path = path self.path_specified = path_specified self.secure = secure self.expires = expires self.discard = discard self.comment = comment self.comment_url = comment_url self.rfc2109 = rfc2109
2.쿠키정책
이 클래스의 주요 기능은 쿠키를 보내고 받는 것입니다. 즉, 올바른 쿠키가 해당 도메인 이름으로 전송되는지 확인하고 그 반대의 경우도 마찬가지입니다.
3.기본 쿠키 정책
이 클래스는 CookiePolicy 인터페이스를 구현합니다.
4.쿠키병
CookieJar는 쿠키의 모음으로, 많은 Cookie 클래스를 포함할 수 있으며 당사의 주요 작업 객체입니다. 내부에는 보다 세부적인 작업을 지원하는 일련의 메서드가 있습니다!
5.파일쿠키병
이 클래스는 CookieJar에서 상속됩니다. CookieJar는 메모리에서만 수명 주기를 완료합니다. FileCookieJar의 하위 클래스는 데이터 지속성을 달성할 수 있으며 저장, 로드 및 되돌리기의 세 가지 인터페이스를 정의합니다.
6.MozillaCookieJar 및 LWPCookieJar
두 개의 구현 클래스, 상속 관계는 다음과 같습니다.
예: Renren에 로그인
Firefox에서 httpFox 플러그인을 사용하여 Renren.com에 로그인할 때 필요한 POST 주소를 찾으세요: http://www.renren.com/ajaxLogin
그리고 게시해야 하는 데이터에 이메일과 비밀번호가 포함되어 있는 것을 확인했습니다
Python은 cookielib를 통해 쿠키를 처리합니다. 다음은 간단한 코드입니다
>>> import urllib >>> import urllib2,cookielib >>> login_page = "http://www.renren.com/ajaxLogin" >>> cj = cookielib.CookieJar() >>> opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) >>> opener.add_handler = [('User-agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')] >>> data = urllib.urlencode({"email":'username',"password":'password'}) >>> opener.open(login_page,data) <addinfourl at 53653216 whose fp = <socket._fileobject object at 0x03307B70>> >>> if cj: ... for index,cookie in enumerate(cj): ... print index,':',cookie ... 0 : <Cookie _de=90D533AE20EB964CA96710977F452897 for .renren.com/> 1 : <Cookie anonymid=hlehtdzg-8359yw for .renren.com/> 2 : <Cookie first_login_flag=1 for .renren.com/> 3 : <Cookie id=224967207 for .renren.com/> 4 : <Cookie loginfrom=null for .renren.com/> 5 : <Cookie p=9beb60859c004bcaf0a32ff2c973473d7 for .renren.com/> 6 : <Cookie societyguester=86b6a6006002ab6316f708521ab50bfc7 for .renren.com/> 7 : <Cookie t=86b6a6006002ab6316f708521ab50bfc7 for .renren.com/> 8 : <Cookie xnsid=fa53da51 for .renren.com/> 9 : <Cookie t=30af9ffe774f4d6f242e92da1ccd6670 for .renren.com/xtalk/> 10 : <Cookie feedType=224967207_hot for .www.renren.com/> 11 : <Cookie JSESSIONID=abc3IP9kEhTExblxcRfeu for www.renren.com/> >>>
firebug나 httpFox에서 얻은 쿠키와 비교할 수 있습니다. 값이 일치하지 않을 수 있지만 키는 기본적으로 로그인할 때마다 일치하지 않아야 합니다.
또한 fidder를 사용하여 쿠키 없이 POST 데이터 전송을 시뮬레이션하려고 시도했지만 원하는 반환 값을 얻지 못했습니다.
쿠키 정보를 추가하신 후 정상적으로 홈페이지로 이동하실 수 있습니다
자, 우리는 기본적으로 Python에서 로그인 정보를 보내기 위해 쿠키를 사용하는 방법을 이해했습니다. 이제 Renren.com에 로그인하기 위한 작은 스크립트를 작성해 보겠습니다.
#encoding=utf-8 import urllib2 import urllib import cookielib def renrenBrower(url,user,password): login_page = "http://www.renren.com/ajaxLogin" try: cj = cookielib.CookieJar() opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) opener.addheaders = [('User-agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')] data = urllib.urlencode({"email":user,"password":password}) opener.open(login_page,data) op=opener.open(url) data= op.read() return data except Exception,e: print str(e) print renrenBrower("http://www.renren.com/home","用户名","密码")
이런 식으로 홈페이지에 정보를 표시할 수 있습니다. 실제로 로그인 후에도 계속해서 스크립트를 작성하여 친구의 최신 소식 등 원하는 정보를 얻을 수 있습니다. 너무 많아요~