>  기사  >  백엔드 개발  >  시뮬레이션된 로그인 예제를 구현하기 위해 쿠키를 사용하는 Python 크롤러에 대한 자세한 설명

시뮬레이션된 로그인 예제를 구현하기 위해 쿠키를 사용하는 Python 크롤러에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-01-18 16:15:311681검색

쿠키란 일부 웹사이트에서 사용자의 신원을 식별하고 세션 추적을 수행하기 위해 사용자의 로컬 단말기에 저장하는(보통 암호화된) 데이터를 말합니다.

예를 들어 일부 웹사이트에서는 원하는 정보를 얻으려면 로그인이 필요합니다. 로그인하지 않으면 게스트 모드로만 들어갈 수 있습니다. 그런 다음 Urllib2 라이브러리를 사용하여 이전에 로그인한 쿠키를 저장할 수 있습니다. 그런 다음 쿠키를 입력하여 원하는 페이지를 가져온 다음 크롤링합니다. 쿠키를 이해하는 것은 주로 로그인을 빠르게 시뮬레이션하고 대상 웹 페이지를 크롤링할 수 있도록 준비하는 것입니다.

이전 게시물에서는 urlopen() 함수를 사용하여 크롤링용 웹페이지를 열었습니다. 이는 단순한 Python 웹페이지 오프너이며 해당 매개변수는 urlopen(url, data, timeout)뿐입니다. 매개변수는 대상 웹페이지의 쿠키를 얻기에는 충분하지 않습니다. 이번에는 또 다른 Opener-CookieJar를 사용하겠습니다.

Cookielib는 Python 크롤러를 위한 중요한 모듈이기도 합니다. urllib2와 결합하여 원하는 콘텐츠를 크롤링할 수 있습니다. 이 모듈의 CookieJar 클래스 개체는 쿠키를 캡처하고 후속 연결 요청 시 이를 다시 보낼 수 있으므로 필요한 시뮬레이션된 로그인 기능을 달성할 수 있습니다.

여기서 특별한 참고 사항은 cookielib가 py2.7에 내장된 모듈이라는 것입니다. 내장 모듈을 보려면 다음에서 Lib 폴더를 볼 수 있습니다. 설치된 모든 모듈이 포함된 Python 디렉터리. 처음에는 생각도 못했는데 pycharm에서 cookielib를 찾을 수 없었습니다. 빠른 설치를 사용했는데 오류가 발생했습니다. 'Cookielib'에 대한 색인 페이지를 찾을 수 없습니다(철자가 틀린가요?)

시뮬레이션된 로그인 예제를 구현하기 위해 쿠키를 사용하는 Python 크롤러에 대한 자세한 설명

그러다가 lib 폴더에 가서 거기에 있는지 볼 줄은 몰랐습니다 ~~

모듈을 소개하자면, 이 모듈의 주요 객체는 CookieJar, FileCookieJar, MozillaCookieJar, LWPCookieJar입니다.

관계: CookieJar —-Derived—->FileCookieJar —-Derived—–>MozillaCookieJar와 LWPCookieJar의 주요 사용법에 대해서는 아래에서 설명하겠습니다. urllib2.urlopen() 함수는 인증, 쿠키 또는 기타 고급 HTTP 기능을 지원하지 않습니다. 이러한 기능을 지원하려면 build_opener()(Python 프로그램이 브라우저 액세스를 시뮬레이션하도록 하는 데 사용할 수 있음, function~) 함수를 사용하여 사용자 정의 Opener 객체를 생성해야 합니다.

1. 먼저 웹사이트의 쿠키를 구해봅시다

예시:

#coding=utf-8 
import cookielib 
import urllib2 
  
mycookie = cookielib.CookieJar() #声明一个CookieJar的类对象保存cookie(注意CookieJar的大小写问题) 
handler = urllib2.HTTPCookieProcessor(mycookie) #利用urllib2库中的HTTPCookieProcessor来声明一个处理cookie的处理器 
opener = urllib2.build_opener(handler) #利用handler来构造opener,opener的用法和urlopen()类似 
response = opener.open("http://www.baidu.com") #opener返回的一个应答对象response 
for item in my.cookie: 
  print"name="+item.name 
  print"value="+item.value

결과:

name=BAIDUID
value=73BD718962A6EA0DAD4CB9578A08FDD0:FG=1
name=BIDUPSID
value=73BD718962A6EA0DAD4CB9578A08FDD0
name=H_PS_PSSID
value=1450_19035_21122_17001_21454_21409_21394_21377_21526_21189_21398
name=PSTM
value=1478834132
name=BDSVRTM
value=0
name=BD_HOME
value=0

이렇게 우리는 가장 간단한 쿠키를 얻었습니다.

2. 쿠키를 파일로 저장

위에서 쿠키를 얻었으니 이제 쿠키를 저장하는 방법을 알아봅니다. 여기서는 MozillaCookieJar 하위 클래스를 사용하여 쿠키를 저장합니다.

예:

#coding=utf-8
import cookielib
import urllib2
  
mycookie = cookielib.MozillaCookieJar() #声明一个MozillaCookieJar的类对象保存cookie(注意MozillaCookieJar的大小写问题)
handler = urllib2.HTTPCookieProcessor(mycookie) #利用urllib2库中的HTTPCookieProcessor来声明一个处理cookie的处理器
opener = urllib2.build_opener(handler) #利用handler来构造opener,opener的用法和urlopen()类似
response = opener.open("http://www.baidu.com") #opener返回的一个应答对象response
for item in mycookie:
  print"name="+item.name
  print"value="+item.value
filename='mycookie.txt'#设定保存的文件名
mycookie.save(filename,ignore_discard=True, ignore_expires=True)

CookieJar 하위 클래스 MozillaCookiJar를 사용하여 위의 예를 변환하면 이 예를 얻을 수 있습니다. 이유는 무엇입니까? MozillaCookiJar를 CookieJar로 교체해 보겠습니다. 아래 그림을 보면 알 수 있습니다.

시뮬레이션된 로그인 예제를 구현하기 위해 쿠키를 사용하는 Python 크롤러에 대한 자세한 설명

CookieJar는 저장 속성을 저장하지 않습니다~

save() 이에 메소드:ignore_discard는 쿠키가 삭제되더라도 쿠키를 저장하는 것을 의미하고,ignore_expires는 쿠키가 이미 파일에 존재하는 경우 원본 파일을 덮어쓰는 것을 의미합니다. 여기서는 둘 다 True로 설정합니다. 실행 후 쿠키는 cookie.txt 파일에 저장됩니다. 내용을 확인해 보겠습니다.

시뮬레이션된 로그인 예제를 구현하기 위해 쿠키를 사용하는 Python 크롤러에 대한 자세한 설명

이렇게 하면 원하는 쿠키가 성공적으로 저장되었습니다

3. 파일에서 쿠키를 받아

<pre style="background-color: rgb(255, 255, 255); font-family: 宋体; font-size: 9pt;"><pre name="code" class="python">#coding=utf-8
import urllib2
import cookielib
import urllib
  
#第一步先给出账户密码网址准备模拟登录
postdata = urllib.urlencode({
  &#39;stuid&#39;: &#39;1605122162&#39;,
  &#39;pwd&#39;: &#39;xxxxxxxxx&#39;#密码这里就不泄漏啦,嘿嘿嘿
})
loginUrl = &#39;http://ids.xidian.edu.cn/authserver/login?service=http%3A%2F%2Fjwxt.xidian.edu.cn%2Fcaslogin.jsp&#39;# 登录教务系统的URL,成绩查询网址
  
# 第二步模拟登陆并保存登录的cookie
filename = &#39;cookie.txt&#39;  #创建文本保存cookie
mycookie = cookielib.MozillaCookieJar(filename) # 声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(mycookie)) #定义这个opener,对象是cookie
result = opener.open(loginUrl, postdata)
mycookie.save(ignore_discard=True, ignore_expires=True)# 保存cookie到cookie.txt中
  
# 第三步利用cookie请求访问另一个网址,教务系统总址
gradeUrl = &#39;http://ids.xidian.edu.cn/authserver/login?service&#39;  #只要是帐号密码一样的网址就可以, 请求访问成绩查询网址
result = opener.open(gradeUrl)
print result.read()





创建一个带有cookie的opener,在访问登录的URL时,将登录后的cookie保存下来,然后利用这个cookie来访问其他网址。


核心思想:创建opener,包含了cookie的内容。之后在利用opener时,就会自动使用原先保存的cookie.

    

를 방문하세요.

읽어 주셔서 감사합니다. 모두에게 도움이 되기를 바랍니다. 이 사이트!

쿠키를 사용하여 시뮬레이션된 로그인 예제를 구현하는 Python 크롤러에 대한 자세한 설명을 보려면 PHP 중국어 웹사이트의 관련 기사를 참고하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.