python获取登录后的cookie_python爬虫使用cookie登录详解
前言:
什么是cookie?
Cookie,指某些網(wǎng)站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)。
比如說有些網(wǎng)站需要登錄后才能訪問某個頁面,在登錄之前,你想抓取某個頁面內(nèi)容是不允許的。那么我們可以利用Urllib庫保存我們登錄的Cookie,然后再抓取其他頁面,這樣就達到了我們的目的。
一、Urllib庫簡介
Urllib是python內(nèi)置的HTTP請求庫,官方地址:https://docs.python.org/3/library/urllib.html
包括以下模塊:
>>>urllib.request請求模塊
>>>urllib.error異常處理模塊
>>>urllib.parseurl解析模塊
>>>urllib.robotparserrobots.txt解析模塊
二、urllib.request.urlopen介紹
uurlopen一般常用的有三個參數(shù),它的參數(shù)如下:
urllib.requeset.urlopen(url,data,timeout)
簡單的例子:
1、url參數(shù)的使用(請求的URL)
response=urllib.request.urlopen('http://www.baidu.com')
2、data參數(shù)的使用(以post請求方式請求)
data=bytes(urllib.parse.urlencode({'word':'hello'}),encoding='utf8')
response=urllib.request.urlopen('http://www.baidu.com/post',data=data)
3、timeout參數(shù)的使用(請求設置一個超時時間,而不是讓程序一直在等待結(jié)果)
response=urllib.request.urlopen('http://www.baidu.com/get',timeout=4)
三、構(gòu)造Requset
1、數(shù)據(jù)傳送POST和GET(舉例說明:此處列舉登錄的請求,定義一個字典為values,參數(shù)為:email和password,然后利用urllib.parse.urlencode方法將字典編碼,命名為data,構(gòu)建request時傳入兩個參數(shù):url、data。運行程序,即可實現(xiàn)登陸。)
GET方式:直接以鏈接形式訪問,鏈接中包含了所有的參數(shù)。
LOGIN_URL="http://fr*****.aflt.kiwisns.com/postLogin/"
values={'email':'*******@user.com','password':'123456'}
data=urllib.parse.urlencode(values).encode()
geturl=LOGIN_URL+"?"+data
request=urllib.request.Request(geturl)
POST方式:上面說的data參數(shù)就是用在這里的,我們傳送的數(shù)據(jù)就是這個參數(shù)data。
LOGIN_URL='http://fr*****.aflt.kiwisns.com/postLogin/'
values={'email':'*******@user.com','password':'123456'}
data=urllib.parse.urlencode(values).encode()
request=urllib.request.Request(URL,data)
2、設置Headers(有些網(wǎng)站不會同意程序直接用上面的方式進行訪問,如果識別有問題,那么站點根本不會響應,所以為了完全模擬瀏覽器的工作,我們需要設置一些Headers的屬性)
fiddler抓包請求-headers
上圖可以看到該請求的headers,這個頭中包含了許多信息:Cache、Client、Transport等等。其中,agent就是請求的身份,如果沒有寫入請求身份,那么服務器不一定會響應,所以可以在headers中設置agent。
舉例:(這個例子只是說明了怎樣設置headers)
user_agent=r'Mozilla/5.0(WindowsNT6.1;Win64;x64;rv:55.0)Gecko/20100101Firefox/55.0'
headers={'User-Agent':user_agent,'Connection':'keep-alive'}
request=urllib.request.Request(URL,data,headers)
四、使用cookie登錄
1、獲取登錄網(wǎng)址
瀏覽器輸入需要登錄的網(wǎng)址:'http://fr*****.aflt.kiwisns.com/login'(注意:這個并非其真實站點登錄網(wǎng)址),使用抓包工具fiddler抓包(其他工具也可)找到登錄后看到的request。
此處確定需要登錄的網(wǎng)址為:'http://fr*****.aflt.kiwisns.com/postLogin/'
查看登錄的request網(wǎng)址
2、查看要傳送的post數(shù)據(jù)
找到登錄后的request中有webforms的信息,會列出登錄要用的post數(shù)據(jù),包括Email,password,auth。
webforms信息
3、查看headers信息
找到登錄后看到的request的headers信息,找出User-Agent設置、connection設置等
User-Agent設置、connection設置
4、開始編碼,使用cookie登錄該網(wǎng)站
5、反復使用cookie登錄
(上面代碼中我們保存cookie到本地了,以下代碼我們能夠直接從文件導入cookie進行登錄,不用再構(gòu)建request了)
總結(jié)
以上就是本文關于python爬蟲使用cookie登錄詳解的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
本文標題: python爬蟲使用cookie登錄詳解
本文地址: http://www.cppcns.com/jiaoben/python/215903.html
總結(jié)
以上是生活随笔為你收集整理的python获取登录后的cookie_python爬虫使用cookie登录详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 给excel添加一列_java
- 下一篇: 通过python爬虫爬取图片,并通过企业