python爬蟲(chóng)使用cookie登錄詳解
前言:
什么是cookie?
Cookie,指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過(guò)加密)。
比如說(shuō)有些網(wǎng)站需要登錄后才能訪問(wèn)某個(gè)頁(yè)面,在登錄之前,你想抓取某個(gè)頁(yè)面內(nèi)容是不允許的。那么我們可以利用Urllib庫(kù)保存我們登錄的Cookie,然后再抓取其他頁(yè)面,這樣就達(dá)到了我們的目的。
一、Urllib庫(kù)簡(jiǎn)介
Urllib是python內(nèi)置的HTTP請(qǐng)求庫(kù),官方地址:https://docs.python.org/3/library/urllib.html
包括以下模塊:
>>>urllib.request請(qǐng)求模塊
>>>urllib.error異常處理模塊
>>>urllib.parseurl解析模塊
>>>urllib.robotparserrobots.txt解析模塊
二、urllib.request.urlopen介紹
uurlopen一般常用的有三個(gè)參數(shù),它的參數(shù)如下:
urllib.requeset.urlopen(url,data,timeout)
簡(jiǎn)單的例子:
1、url參數(shù)的使用(請(qǐng)求的URL)
response=urllib.request.urlopen('http://www.baidu.com')
2、data參數(shù)的使用(以post請(qǐng)求方式請(qǐng)求)
data=bytes(urllib.parse.urlencode({'word':'hello'}),encoding='utf8')
response=urllib.request.urlopen('http://www.baidu.com/post',data=data)
3、timeout參數(shù)的使用(請(qǐng)求設(shè)置一個(gè)超時(shí)時(shí)間,而不是讓程序一直在等待結(jié)果)
response=urllib.request.urlopen('http://www.baidu.com/get',timeout=4)
三、構(gòu)造Requset
1、數(shù)據(jù)傳送POST和GET(舉例說(shuō)明:此處列舉登錄的請(qǐng)求,定義一個(gè)字典為values,參數(shù)為:email和password,然后利用urllib.parse.urlencode方法將字典編碼,命名為data,構(gòu)建request時(shí)傳入兩個(gè)參數(shù):url、data。運(yùn)行程序,即可實(shí)現(xiàn)登陸。)
GET方式:直接以鏈接形式訪問(wèn),鏈接中包含了所有的參數(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方式:上面說(shuō)的data參數(shù)就是用在這里的,我們傳送的數(shù)據(jù)就是這個(gè)參數(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、設(shè)置Headers(有些網(wǎng)站不會(huì)同意程序直接用上面的方式進(jìn)行訪問(wèn),如果識(shí)別有問(wèn)題,那么站點(diǎn)根本不會(huì)響應(yīng),所以為了完全模擬瀏覽器的工作,我們需要設(shè)置一些Headers的屬性)

fiddler抓包請(qǐng)求-headers
上圖可以看到該請(qǐng)求的headers,這個(gè)頭中包含了許多信息:Cache、Client、Transport等等。其中,agent就是請(qǐng)求的身份,如果沒(méi)有寫(xiě)入請(qǐng)求身份,那么服務(wù)器不一定會(huì)響應(yīng),所以可以在headers中設(shè)置agent。
舉例:(這個(gè)例子只是說(shuō)明了怎樣設(shè)置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'(注意:這個(gè)并非其真實(shí)站點(diǎn)登錄網(wǎng)址),使用抓包工具fiddler抓包(其他工具也可)找到登錄后看到的request。
此處確定需要登錄的網(wǎng)址為:'http://fr*****.aflt.kiwisns.com/postLogin/'

查看登錄的request網(wǎng)址
2、查看要傳送的post數(shù)據(jù)
找到登錄后的request中有webforms的信息,會(huì)列出登錄要用的post數(shù)據(jù),包括Email,password,auth。

webforms信息
3、查看headers信息
找到登錄后看到的request的headers信息,找出User-Agent設(shè)置、connection設(shè)置等

User-Agent設(shè)置、connection設(shè)置
4、開(kāi)始編碼,使用cookie登錄該網(wǎng)站

5、反復(fù)使用cookie登錄
(上面代碼中我們保存cookie到本地了,以下代碼我們能夠直接從文件導(dǎo)入cookie進(jìn)行登錄,不用再構(gòu)建request了)

總結(jié)
以上就是本文關(guān)于python爬蟲(chóng)使用cookie登錄詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- python 爬蟲(chóng)如何正確的使用cookie
- Python3爬蟲(chóng)帶上cookie的實(shí)例代碼
- Python爬蟲(chóng)使用瀏覽器cookies:browsercookie過(guò)程解析
- Python3爬蟲(chóng)之urllib攜帶cookie爬取網(wǎng)頁(yè)的方法
- python爬蟲(chóng)中g(shù)et和post方法介紹以及cookie作用
- Python爬蟲(chóng)番外篇之Cookie和Session詳解
- Python爬蟲(chóng)利用cookie實(shí)現(xiàn)模擬登陸實(shí)例詳解
- 玩轉(zhuǎn)python爬蟲(chóng)之cookie使用方法
- Python中urllib+urllib2+cookielib模塊編寫(xiě)爬蟲(chóng)實(shí)戰(zhàn)
- python爬蟲(chóng)中PhantomJS加載頁(yè)面的實(shí)例方法
- Python爬蟲(chóng)JSON及JSONPath運(yùn)行原理詳解
- Python爬蟲(chóng)如何破解JS加密的Cookie
相關(guān)文章
python數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換實(shí)例詳解
這篇文章主要介紹了python數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Python計(jì)算一個(gè)給定時(shí)間點(diǎn)前一個(gè)月和后一個(gè)月第一天的方法
這篇文章主要介紹了Python計(jì)算一個(gè)給定時(shí)間點(diǎn)前一個(gè)月和后一個(gè)月第一天的方法,涉及Python使用datetime模塊計(jì)算日期時(shí)間的相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
從頭學(xué)Python之編寫(xiě)可執(zhí)行的.py文件
這篇文章主要介紹了從頭學(xué)Python之編寫(xiě)可執(zhí)行的.py文件,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
在python中實(shí)現(xiàn)發(fā)送短信功能
工作中我們經(jīng)常會(huì)用到發(fā)短信的需求,那么如何在python代碼中實(shí)現(xiàn)發(fā)短息你的需求呢,本文我們就一起深入探討下,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下2024-04-04
Python3.5 Pandas模塊之Series用法實(shí)例分析
這篇文章主要介紹了Python3.5 Pandas模塊之Series用法,結(jié)合實(shí)例形式分析了Python3.5中Pandas模塊的Series結(jié)構(gòu)原理、創(chuàng)建、獲取、運(yùn)算等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-04-04
基于Python中numpy數(shù)組的合并實(shí)例講解
下面小編就為大家分享一篇基于Python中numpy數(shù)組的合并實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
python詞云庫(kù)wordCloud使用方法詳解(解決中文亂碼)
這篇文章主要介紹了python詞云庫(kù)wordCloud使用方法詳解(解決中文亂碼),需要的朋友可以參考下2020-02-02
Tensorflow2.1實(shí)現(xiàn)文本中情感分類實(shí)現(xiàn)解析
這篇文章主要為大家介紹了Tensorflow2.1實(shí)現(xiàn)文本中情感分類實(shí)現(xiàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11

