摘要:爬蟲和反爬蟲就是一個貓和老鼠的游戲,道高一尺魔高一丈,兩者反復(fù)糾纏。由于協(xié)議的無狀態(tài)性,登錄驗證都是通過傳遞來實(shí)現(xiàn)的。通過瀏覽器登錄一次,登錄信息的是就會被瀏覽器保存下來。模塊就是這樣一個從瀏覽器提取保存的的工具。
很多用Python的人可能都寫過網(wǎng)絡(luò)爬蟲,自動化獲取網(wǎng)絡(luò)數(shù)據(jù)確實(shí)是一件令人愉悅的事情,而Python很好的幫助我們達(dá)到這種愉悅。然而,爬蟲經(jīng)常要碰到各種登錄、驗證的阻撓,讓人灰心喪氣(網(wǎng)站:天天碰到各種各樣的爬蟲抓我們網(wǎng)站,也很讓人灰心喪氣~)。爬蟲和反爬蟲就是一個貓和老鼠的游戲,道高一尺魔高一丈,兩者反復(fù)糾纏。
由于http協(xié)議的無狀態(tài)性,登錄驗證都是通過傳遞cookies來實(shí)現(xiàn)的。通過瀏覽器登錄一次,登錄信息的cookie是就會被瀏覽器保存下來。下次再打開該網(wǎng)站時,瀏覽器自動帶上保存的cookies,只有cookies還未過期,對于網(wǎng)站來說你就還是登錄狀態(tài)的。
browsercookie模塊就是這樣一個從瀏覽器提取保存的cookies的工具。它是一個很有用的爬蟲工具,通過加載你瀏覽器的cookies到一個cookiejar對象里面,讓你輕松下載需要登錄的網(wǎng)頁內(nèi)容。
安裝
pip install browsercookie
在Windows系統(tǒng)中,內(nèi)置的sqlite模塊在加載FireFox數(shù)據(jù)庫時會拋出錯誤。需要更新sqlite的版本:
pip install pysqlite
使用方法
下面是從網(wǎng)頁提取標(biāo)題的例子:
>>> import re >>> get_title = lambda html: re.findall("(.*?) ", html, flags=re.DOTALL)[0].strip()
下面是未登錄狀況下下載得到的標(biāo)題:
>>> import urllib2 >>> url = "https://bitbucket.org/" >>> public_html = urllib2.urlopen(url).read() >>> get_title(public_html) "Git and Mercurial code management for teams"
接下來使用browsercookie從登錄過Bitbucket的FireFox里面獲取cookie再下載:
>>> import browsercookie >>> cj = browsercookie.firefox() >>> opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) >>> login_html = opener.open(url).read() >>> get_title(login_html) "richardpenman / home — Bitbucket"
上面是Python2的代碼,再試試 Python3:
>>> import urllib.request >>> public_html = urllib.request.urlopen(url).read() >>> opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
你可以看到你的用戶名出現(xiàn)在title里面了,說明browsercookie模塊成功從FireFox加載了cookies。
下面是使用requests的例子,這次我們從Chrome里面加載cookies,當(dāng)然你需要事先用Chrome登錄Bitbucket:
>>> import requests >>> cj = browsercookie.chrome() >>> r = requests.get(url, cookies=cj) >>> get_title(r.content) "richardpenman / home — Bitbucket"
如果你不知道或不關(guān)心那個瀏覽器有你需要的cookies,你可以這樣操作:
>>> cj = browsercookie.load() >>> r = requests.get(url, cookies=cj) >>> get_title(r.content) "richardpenman / home — Bitbucket"
支持
目前,該模塊支持以下平臺:
Chrome: Linux, OSX, Windows
Firefox: Linux, OSX, Windows
目前該模塊測試過的瀏覽器版本還不是很多,你使用過程中可能會遇到問題,可以向作者提交問題:
https://bitbucket.org/richard...
文章來源于:猿人學(xué)網(wǎng)站的python教程。
版權(quán)申明:若沒有特殊說明,文章皆是猿人學(xué)原創(chuàng),沒有猿人學(xué)授權(quán),請勿以任何形式轉(zhuǎn)載。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/43725.html
摘要:而在中對象用來存儲特定用戶會話所需的屬性及配置信息。當(dāng)會話過期或被放棄后,服務(wù)器將終止該會話。,即該是否僅被使用安全協(xié)議傳輸。安全協(xié)議有,等,在網(wǎng)絡(luò)上傳輸數(shù)據(jù)之前先將數(shù)據(jù)加密。 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---17、爬蟲基本原理下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---19、代理基本原理 在瀏覽網(wǎng)站的過程中我們經(jīng)常會遇到需要登錄的情況,有些頁面只有登錄之后我們才可以訪問...
摘要:學(xué)習(xí)網(wǎng)絡(luò)爬蟲主要分個大的版塊抓取,分析,存儲另外,比較常用的爬蟲框架,這里最后也詳細(xì)介紹一下。網(wǎng)絡(luò)爬蟲要做的,簡單來說,就是實(shí)現(xiàn)瀏覽器的功能。 Python學(xué)習(xí)網(wǎng)絡(luò)爬蟲主要分3個大的版塊:抓取,分析,存儲 另外,比較常用的爬蟲框架Scrapy,這里最后也詳細(xì)介紹一下。 首先列舉一下本人總結(jié)的相關(guān)文章,這些覆蓋了入門網(wǎng)絡(luò)爬蟲需要的基本概念和技巧:寧哥的小站-網(wǎng)絡(luò)爬蟲,當(dāng)我們在瀏覽器中輸入...
摘要:在發(fā)明之初,為了幫助服務(wù)器同步網(wǎng)頁上的用戶信息,同時保存用戶操作,以此減輕服務(wù)器壓力。由正在瀏覽的網(wǎng)站創(chuàng)建的被稱為第一方。這些第三方怎么來的呢他們又有什么作用了。寫在最后了解歷史,有助于,我們更好的定位問題。 ...
摘要:所以只要得到登錄后的并必要時進(jìn)行更新,服務(wù)器就會認(rèn)定其為登錄狀態(tài)??纯慈思抑酰用艿竭B名字都沒有了,還混淆,如何下手綜上,適用于沒有加密的登錄或者加密算法比較簡單并且不常更新的網(wǎng)站。遇上無解的加密算法要么手操拷貝,要么請大佬出場。 某些網(wǎng)站,登錄和沒登錄,用戶的權(quán)限是不一樣的,帳號登錄之后才能獲取更多的信息。更有甚者一上來就是登錄界面,不登錄就不給你進(jìn)去(如p站)。爬取目標(biāo)不用登錄固...
摘要:當(dāng)我們試圖從新浪微博抓取數(shù)據(jù)時,我們會發(fā)現(xiàn)網(wǎng)頁上提示未登錄,無法查看其他用戶的信息。三模擬登錄下面將介紹使用獲取新浪微博,然后使用提交從而實(shí)現(xiàn)模擬登錄。 當(dāng)我們試圖從新浪微博抓取數(shù)據(jù)時,我們會發(fā)現(xiàn)網(wǎng)頁上提示未登錄,無法查看其他用戶的信息。模擬登錄是定向爬蟲制作中一個必須克服的問題,只有這樣才能爬取到更多的內(nèi)容。 showImg(https://segmentfault.com/img/...
閱讀 1096·2021-11-22 14:56
閱讀 1537·2019-08-30 15:55
閱讀 3379·2019-08-30 15:45
閱讀 1668·2019-08-30 13:03
閱讀 2881·2019-08-29 18:47
閱讀 3346·2019-08-29 11:09
閱讀 2652·2019-08-26 18:36
閱讀 2629·2019-08-26 13:55