欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python爬蟲使用cookie登錄詳解

 更新時(shí)間:2017年12月27日 14:22:47   作者:__擱淺  
這篇文章主要介紹了python爬蟲使用cookie登錄詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下

前言:

什么是cookie?

Cookie,指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)。

比如說有些網(wǎng)站需要登錄后才能訪問某個(gè)頁面,在登錄之前,你想抓取某個(gè)頁面內(nèi)容是不允許的。那么我們可以利用Urllib庫保存我們登錄的Cookie,然后再抓取其他頁面,這樣就達(dá)到了我們的目的。

一、Urllib庫簡介

Urllib是python內(nèi)置的HTTP請(qǐng)求庫,官方地址: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)

簡單的例子:

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(舉例說明:此處列舉登錄的請(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方式:直接以鏈接形式訪問,鏈接中包含了所有的參數(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ù)就是這個(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)行訪問,如果識(shí)別有問題,那么站點(diǎn)根本不會(huì)響應(yīng),所以為了完全模擬瀏覽器的工作,我們需要設(shè)置一些Headers的屬性)

fiddler抓包請(qǐng)求-headers

上圖可以看到該請(qǐng)求的headers,這個(gè)頭中包含了許多信息:Cache、Client、Transport等等。其中,agent就是請(qǐng)求的身份,如果沒有寫入請(qǐng)求身份,那么服務(wù)器不一定會(huì)響應(yīng),所以可以在headers中設(shè)置agent。

舉例:(這個(gè)例子只是說明了怎樣設(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、開始編碼,使用cookie登錄該網(wǎng)站

5、反復(fù)使用cookie登錄

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

總結(jié)

以上就是本文關(guān)于python爬蟲使用cookie登錄詳解的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • Python實(shí)現(xiàn)重建二叉樹的三種方法詳解

    Python實(shí)現(xiàn)重建二叉樹的三種方法詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)重建二叉樹的三種方法,結(jié)合實(shí)例形式分析了Python重建二叉樹的實(shí)現(xiàn)方法、操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-06-06
  • 基于Python實(shí)現(xiàn)火車票搶票軟件

    基于Python實(shí)現(xiàn)火車票搶票軟件

    每年的節(jié)假日一到,大家頭疼的總時(shí)同一個(gè)問題:你買到回家的票了嗎?尤其是大型的節(jié)日:國慶、春節(jié)等。本文將利用Python編寫一個(gè)火車票搶票軟件,感興趣的可以了解一下
    2022-07-07
  • 解決Pycharm 包已經(jīng)下載,但是運(yùn)行代碼提示找不到模塊的問題

    解決Pycharm 包已經(jīng)下載,但是運(yùn)行代碼提示找不到模塊的問題

    今天小編就為大家分享一篇解決Pycharm 包已經(jīng)下載,但是運(yùn)行代碼提示找不到模塊的問題。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • DataFrame 數(shù)據(jù)合并實(shí)現(xiàn)(merge,join,concat)

    DataFrame 數(shù)據(jù)合并實(shí)現(xiàn)(merge,join,concat)

    這篇文章主要介紹了DataFrame 數(shù)據(jù)合并實(shí)現(xiàn)(merge,join,concat),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • selenium+PhantomJS爬取豆瓣讀書

    selenium+PhantomJS爬取豆瓣讀書

    這篇文章主要為大家詳細(xì)介紹了selenium+PhantomJS爬取豆瓣讀書,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Python 如何解決稀疏矩陣運(yùn)算

    Python 如何解決稀疏矩陣運(yùn)算

    這篇文章主要介紹了Python 解決稀疏矩陣運(yùn)算的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2021-05-05
  • python刪除不需要的python文件方法

    python刪除不需要的python文件方法

    下面小編就為大家分享一篇python刪除不需要的python文件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 五分鐘學(xué)會(huì)怎么用python做一個(gè)簡單的貪吃蛇

    五分鐘學(xué)會(huì)怎么用python做一個(gè)簡單的貪吃蛇

    這篇文章主要介紹了五分鐘學(xué)會(huì)怎么用python做一個(gè)簡單的貪吃蛇,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • python安裝Scrapy圖文教程

    python安裝Scrapy圖文教程

    下面小編就為大家?guī)硪黄猵ython安裝Scrapy圖文教程。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • 基于Python實(shí)現(xiàn)自動(dòng)用小寫字母替換文件后綴的大寫字母

    基于Python實(shí)現(xiàn)自動(dòng)用小寫字母替換文件后綴的大寫字母

    本文介紹基于Python語言,基于一個(gè)大文件夾,遍歷其中的多個(gè)子文件夾,對(duì)于每一個(gè)子文件夾中的大量文件,批量將其文件的名稱或后綴名中的字母由大寫修改為小寫的方法,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-04-04

最新評(píng)論