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