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

Python 爬蟲(chóng)模擬登陸知乎

 更新時(shí)間:2016年09月23日 16:14:27   作者:O賣(mài)女孩的小火柴O  
這篇文章主要介紹了Python 爬蟲(chóng)模擬登陸知乎的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

在之前寫(xiě)過(guò)一篇使用python爬蟲(chóng)爬取電影天堂資源的文章,重點(diǎn)是如何解析頁(yè)面和提高爬蟲(chóng)的效率。由于電影天堂上的資源獲取權(quán)限是所有人都一樣的,所以不需要進(jìn)行登錄驗(yàn)證操作,寫(xiě)完那篇文章后又花了些時(shí)間研究了一下python模擬登陸,網(wǎng)上關(guān)于這部分的資料很多,很多demo都是登陸知乎的,原因是知乎的登陸比較簡(jiǎn)單,只需要post幾個(gè)參數(shù),保存cookie。而且還沒(méi)有進(jìn)行加密,很適合用來(lái)做教學(xué)。我也是是新手,一點(diǎn)點(diǎn)的摸索終于成功登陸上了知乎。就通過(guò)這篇文章分享一下學(xué)習(xí)這部分的心得,希望對(duì)那些和我一樣的初學(xué)者有所幫助。

  先來(lái)說(shuō)一下,爬蟲(chóng)模擬登陸的基本原理吧,我也是剛開(kāi)始接觸對(duì)于一些深層次的東西也不是掌握的很清楚。首先比較重要的一個(gè)概念就是cookie,我們都知道HTTP是一種無(wú)狀態(tài)的協(xié)議,也就是說(shuō)當(dāng)一個(gè)瀏覽器客戶端向服務(wù)器提交一個(gè)request,服務(wù)器回應(yīng)一個(gè)response后,他們之間的聯(lián)系就中斷了。這樣就導(dǎo)致了這個(gè)客戶端在向服務(wù)器發(fā)送請(qǐng)求時(shí),服務(wù)器無(wú)法判別這兩個(gè)客戶端是不是一個(gè)了。這樣肯定是不行的。這時(shí)cookie的作用就體現(xiàn)出來(lái)了。當(dāng)客戶端向服務(wù)器發(fā)送一個(gè)請(qǐng)求后,服務(wù)器會(huì)給它分配一個(gè)標(biāo)識(shí)(cookie),并保存到客戶端本地,當(dāng)下次該客戶端再次發(fā)送請(qǐng)求時(shí)連帶著cookie一并發(fā)送給服務(wù)器,服務(wù)器一看到cookie,啊原來(lái)是你呀,這是你的東西,拿走吧。所以一個(gè)爬蟲(chóng)模擬登陸就是要要做到模擬一個(gè)瀏覽器客戶端的行為,首先將你的基本登錄信息發(fā)送給指定的url,服務(wù)器驗(yàn)證成功后會(huì)返回一個(gè)cookie,我們就利用這個(gè)cookie進(jìn)行后續(xù)的爬取工作就行了。

   我這里抓包用的就是chrome的開(kāi)發(fā)者工具,不過(guò)你也可以使用Fiddler、Firebug等都可以,只不過(guò)作為一名前端er對(duì)chrome有一種特殊的喜愛(ài)之情。準(zhǔn)備好工具接下來(lái)就要打開(kāi)知乎的登陸頁(yè)面并查看https://www.zhihu.com/#signin 我們可以很容易發(fā)現(xiàn)這個(gè)請(qǐng)求 發(fā)送的就是登錄信息,當(dāng)然我使用手機(jī)登陸的 用郵件登陸的是最后結(jié)尾是email

所以我們只需要向這個(gè)地址post數(shù)據(jù)就行了

phone_num 登錄名
password 密碼
captcha_type 驗(yàn)證碼類(lèi)型(這個(gè)參數(shù)著這里并沒(méi)有實(shí)質(zhì)作用)
rember_me 記住密碼

_xsrf 一個(gè)隱藏的表單元素 知乎用來(lái)防御CSRF的(關(guān)于CSRF請(qǐng)打開(kāi)這里) 我發(fā)現(xiàn)這個(gè)值是固定所以就在這里直接寫(xiě)死了 若果有興趣的同學(xué)可以寫(xiě)一個(gè)正則表達(dá)式 把這部分的值提取出來(lái) 這樣更嚴(yán)謹(jǐn)一些。

# -*- coding:utf-8 -*-
import urllib2
import urllib
import cookielib
posturl = 'https://www.zhihu.com/login/phone_num'
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/52.0.2743.116 Safari/537.36',
'Referer':'https://www.zhihu.com/'
}
value = {
'password':'*****************',
'remember_me':True,
'phone_num':'*******************',
'_xsrf':'**********************'
}
data=urllib.urlencode(value)
#初始化一個(gè)CookieJar來(lái)處理Cookie
cookieJar=cookielib.CookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cookieJar)
#實(shí)例化一個(gè)全局opener
opener=urllib2.build_opener(cookie_support)
request = urllib2.Request(posturl, data, headers)
result=opener.open(request)
print result.read()

當(dāng)你看到服務(wù)器返回這個(gè)信息的時(shí)候就說(shuō)明你登陸成功了

{"r":0,
"msg": "\u767b\u5f55\u6210\u529f"
}#翻譯過(guò)來(lái)就是 “登陸成功” 四個(gè)大字

然后你就可以用這個(gè)身份去抓取知乎上的頁(yè)面了

page=opener.open("https://www.zhihu.com/people/yu-yi-56-70")
content = page.read().decode('utf-8')
print(content)

這段代碼就是通過(guò)實(shí)例化一個(gè)opener對(duì)象保存成功登陸后的cookie信息,然后再通過(guò)這個(gè)opener帶著這個(gè)cookie去訪問(wèn)服務(wù)器上關(guān)于這個(gè)身份的完整頁(yè)面。更復(fù)雜的比如微博的登陸這種對(duì)請(qǐng)求的數(shù)據(jù)進(jìn)行加密了的后面有時(shí)間再寫(xiě)出來(lái),與大家分享

相關(guān)文章

  • python pandas利用fillna方法實(shí)現(xiàn)部分自動(dòng)填充功能

    python pandas利用fillna方法實(shí)現(xiàn)部分自動(dòng)填充功能

    這篇文章主要介紹了python pandas通過(guò)fillna方法實(shí)現(xiàn)部分自動(dòng)填充功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • pandas 空數(shù)據(jù)處理方法詳解

    pandas 空數(shù)據(jù)處理方法詳解

    這篇文章主要介紹了pandas 空數(shù)據(jù)處理方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Python利用keyboard模塊實(shí)現(xiàn)鍵盤(pán)記錄操作

    Python利用keyboard模塊實(shí)現(xiàn)鍵盤(pán)記錄操作

    模擬鍵盤(pán)操作執(zhí)行自動(dòng)化任務(wù),我們常用的有pyautowin等自動(dòng)化操作模塊。今天介紹的這個(gè)模塊叫做keyboard,它是純Python原生開(kāi)發(fā),編譯時(shí)完全不需要依賴C語(yǔ)言模塊。一行命令就能完成安裝,非常方便,需要的可以了解一下
    2022-10-10
  • Python OpenCV實(shí)現(xiàn)鼠標(biāo)畫(huà)框效果

    Python OpenCV實(shí)現(xiàn)鼠標(biāo)畫(huà)框效果

    這篇文章主要為大家詳細(xì)介紹了Python OpenCV實(shí)現(xiàn)鼠標(biāo)畫(huà)框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • python遠(yuǎn)程登錄代碼

    python遠(yuǎn)程登錄代碼

    因?yàn)?python 已內(nèi)建了一個(gè) pop3 的函式庫(kù),所以我們直接用它來(lái)完成郵件的下載和處理。事實(shí)上, 如果我們不用 poplib 的話,我們還是可以完成那個(gè)例子中的所有作業(yè):就是通過(guò)模擬 telnet的協(xié)定。
    2008-04-04
  • python爬蟲(chóng) 2019中國(guó)好聲音評(píng)論爬取過(guò)程解析

    python爬蟲(chóng) 2019中國(guó)好聲音評(píng)論爬取過(guò)程解析

    這篇文章主要介紹了python爬蟲(chóng) 2019中國(guó)好聲音評(píng)論爬取過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • django中瀑布流寫(xiě)法實(shí)例代碼

    django中瀑布流寫(xiě)法實(shí)例代碼

    在本篇文章里小編給大家整理的是關(guān)于django中瀑布流寫(xiě)法實(shí)例代碼以及相關(guān)知識(shí)點(diǎn),有需要的朋友們學(xué)習(xí)參考下。
    2019-10-10
  • Python教程之基本運(yùn)算符的使用(上)

    Python教程之基本運(yùn)算符的使用(上)

    Python?運(yùn)算符通常用于對(duì)值和變量執(zhí)行操作。這些是用于邏輯和算術(shù)運(yùn)算的標(biāo)準(zhǔn)符號(hào)。在本文中,我們將研究不同類(lèi)型的?Python?運(yùn)算符,感興趣的可以了解一下
    2022-09-09
  • pytorch實(shí)現(xiàn)seq2seq時(shí)對(duì)loss進(jìn)行mask的方式

    pytorch實(shí)現(xiàn)seq2seq時(shí)對(duì)loss進(jìn)行mask的方式

    今天小編就為大家分享一篇pytorch實(shí)現(xiàn)seq2seq時(shí)對(duì)loss進(jìn)行mask的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python?ttkbootstrap的介紹與使用教程

    Python?ttkbootstrap的介紹與使用教程

    這篇文章主要介紹了Python?ttkbootstrap的介紹與使用,本文僅僅簡(jiǎn)單介紹了ttkbootstrap的使用,而ttkbootstrap可以使我們創(chuàng)建一個(gè)簡(jiǎn)單用戶圖形界面,并對(duì)其可以做一些操作,需要的朋友可以參考下
    2023-03-03

最新評(píng)論