python爬虫模块取cookie_[ Python爬虫实战 ] Python使用cookies - pytorch中文网
一、Cookie登錄簡介
Cookie是一種服務器發(fā)送給瀏覽器的一組數據,用于瀏覽器跟蹤用戶,并訪問服務器時保持登錄狀態(tài)等功能。基本所有的網站,我們都可以通過操作Cookie來進行模擬登錄,所以我們只要通過靈活的操作Cookie就可以實現登錄!
二、為什么要登錄
在很多時候,一些網站要求我們登錄之后才能訪問或者我們需要通過爬蟲抓取我們的個人信息,比如當前一些查詢公積金和社保的APP等。他們都可以根據用戶提供的賬號密碼模擬登錄公積金網站進行查詢然后進行授權管理!
三、Cookielib/cookiejar操作cookies
Python 3.*用urllib.request來代替原來的urllib2,因此調用的時候改為import urllib.request,同時cookielib也被http.cookiejar取代。cookielib/cookiejar模塊的主要作用是提供可存儲cookie的對象,以便于與urllib模塊配合使用來訪問Internet資源。
1、獲取Cookie保存到變量
為了考慮到個版本的兼容,我們這里優(yōu)化了一些代碼,大家使用可以直接使用即可,我們先利用CookieJar對象實現獲取cookie的功能,存儲到變量中
import urllib2,cookielib
# python3環(huán)境
# import urllib.request as urllib2
# import http.cookiejar as cookielib
# 聲明一個CookieJar對象來保存cookie
cookie = cookielib.CookieJar()
# 創(chuàng)建cookie處理器
handler = urllib2.HTTPCookieProcessor(cookie)
# 構建opener
opener = urllib2.build_opener(handler)
# 創(chuàng)建請求,類似urllib2中的urlopen/request
response = opener.open('http://www.baidu.com')
for item in cookie:
print('name:' + item.name + '-value:' + item.value)
2、將Cookie保存到文件中
上面我們已經獲取到了cookies信息,我們可以通過FileCookieJar的子類MozillaCookieJar將cookie信息保存在文件中方便我們后續(xù)使用。
import urllib2,cookielib
# python3環(huán)境
# import urllib.request as urllib2
# import http.cookiejar as cookielib
# 設置保存cookie的文件,當前為同級目錄的cookie.txt
filename = 'cookie.txt'
# 聲明一個MozillaCookieJar對象來保存cookie,之后寫入文件
cookie = cookielib.MozillaCookieJar(filename)
# 創(chuàng)建cookie處理器
handler = urllib2.HTTPCookieProcessor(cookie)
# 構建opener
opener = urllib2.build_opener(handler)
# 創(chuàng)建請求
response = opener.open("http://www.baidu.com")
# 保存cookie到cookie.txt文件
cookie.save(ignore_discard=True, ignore_expires=True)
3、從文件中獲取Cookie并訪問
上面我們已經將Cookie保存到cookie.txt文件中,我們可以利用load方法來讀取cookie并添加到我們Http請求中。
import urllib2,cookielib
# python3環(huán)境
# import urllib.request as urllib2
# import http.cookiejar as cookielib
cookie = cookielib.MozillaCookieJar()
# 從文件中讀取cookie內容到變量
cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)
# 創(chuàng)建請求的request
req = urllib2.Request("http://www.baidu.com")
# 使用build_opener方法創(chuàng)建一個opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open(req)
print response.read()
四、利用cookie模擬網站登錄
注意
通過這里我們可以了解到,有一些網站登錄加密算法非常麻煩;我們需要花費大量時間來編寫登錄爬蟲。如果面對不常用或者一次性的爬蟲,我們可以直接通過瀏覽器登錄網站后,直接使用cookies來編寫我們的爬蟲即可,非常方便。
在這里我們cookie模擬登錄segmentfault.com
import urllib2,cookielib
# python3環(huán)境
# import urllib.request as urllib2
# import http.cookiejar as cookielib
filename = 'cookie.txt'
#聲明一個MozillaCookieJar對象實例來保存cookie,之后寫入文件
cookie = cookielib.MozillaCookieJar(filename)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
postdata = urllib.urlencode({
'stuid':'201200131012',
'pwd':'23342321'
})
#登錄教務系統的URL
loginUrl = 'http://jwxt.sdu.edu.cn:7890/pls/wwwbks/bks_login2.login'
#模擬登錄,并把cookie保存到變量
result = opener.open(loginUrl,postdata)
#保存cookie到cookie.txt中
cookie.save(ignore_discard=True, ignore_expires=True)
#利用cookie請求訪問另一個網址,此網址是成績查詢網址
gradeUrl = 'http://jwxt.sdu.edu.cn:7890/pls/wwwbks/bkscjcx.curscopre'
#請求訪問成績查詢網址
result = opener.open(gradeUrl)
print result.read()
總結
以上是生活随笔為你收集整理的python爬虫模块取cookie_[ Python爬虫实战 ] Python使用cookies - pytorch中文网的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python变量作用域 for_pyth
- 下一篇: 政府专项债券发行条件