成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python爬蟲使用瀏覽器的cookies:browsercookie

xuexiangjys / 2942人閱讀

摘要:爬蟲和反爬蟲就是一個貓和老鼠的游戲,道高一尺魔高一丈,兩者反復(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

相關(guān)文章

  • Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---18、Session和Cookies

    摘要:而在中對象用來存儲特定用戶會話所需的屬性及配置信息。當(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)常會遇到需要登錄的情況,有些頁面只有登錄之后我們才可以訪問...

    SHERlocked93 評論0 收藏0
  • Python入門網(wǎng)絡(luò)爬蟲之精華版

    摘要:學(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)我們在瀏覽器中輸入...

    Bmob 評論0 收藏0
  • Python爬蟲理論之cookie驗證,不回顧下歷史,套路都不知道怎么來!

    摘要:在發(fā)明之初,為了幫助服務(wù)器同步網(wǎng)頁上的用戶信息,同時保存用戶操作,以此減輕服務(wù)器壓力。由正在瀏覽的網(wǎng)站創(chuàng)建的被稱為第一方。這些第三方怎么來的呢他們又有什么作用了。寫在最后了解歷史,有助于,我們更好的定位問題。 ...

    fuyi501 評論0 收藏0
  • Python 從零開始爬蟲(九)——模擬登錄,cookie使用

    摘要:所以只要得到登錄后的并必要時進(jìn)行更新,服務(wù)器就會認(rèn)定其為登錄狀態(tài)??纯慈思抑酰用艿竭B名字都沒有了,還混淆,如何下手綜上,適用于沒有加密的登錄或者加密算法比較簡單并且不常更新的網(wǎng)站。遇上無解的加密算法要么手操拷貝,要么請大佬出場。 某些網(wǎng)站,登錄和沒登錄,用戶的權(quán)限是不一樣的,帳號登錄之后才能獲取更多的信息。更有甚者一上來就是登錄界面,不登錄就不給你進(jìn)去(如p站)。爬取目標(biāo)不用登錄固...

    edgardeng 評論0 收藏0
  • Python定向爬蟲,模擬新浪微博登錄!

    摘要:當(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/...

    isaced 評論0 收藏0

發(fā)表評論

0條評論

xuexiangjys

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<