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

Python 爬蟲模擬登陸知乎

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

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

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

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

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

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

_xsrf 一個隱藏的表單元素 知乎用來防御CSRF的(關(guān)于CSRF請打開這里) 我發(fā)現(xiàn)這個值是固定所以就在這里直接寫死了 若果有興趣的同學(xué)可以寫一個正則表達(dá)式 把這部分的值提取出來 這樣更嚴(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)
#初始化一個CookieJar來處理Cookie
cookieJar=cookielib.CookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cookieJar)
#實(shí)例化一個全局opener
opener=urllib2.build_opener(cookie_support)
request = urllib2.Request(posturl, data, headers)
result=opener.open(request)
print result.read()

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

{"r":0,
"msg": "\u767b\u5f55\u6210\u529f"
}#翻譯過來就是 “登陸成功” 四個大字

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    python爬蟲 2019中國好聲音評論爬取過程解析

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

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

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

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

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

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

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

    Python?ttkbootstrap的介紹與使用教程

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

最新評論