1. 程式人生 > >python爬蟲模擬登陸知乎網

python爬蟲模擬登陸知乎網

自從暑假學了大概一個月左右的爬蟲,開學之後就沒怎麼搞爬蟲了,當時也就學到scrapy框架就放下了,大致瞭解了一下框架,不是太理解,但是在這之前本人的爬蟲水平也僅僅侷限於爬取簡單頁面,爬取動態頁面也稍微瞭解下,但是一直沒有學模擬登陸,因為當時怎麼也搞不懂模擬登陸是怎麼個回事,包括儲存頁面cookies也不知道,
最近有重新拾起爬蟲,準備將爬蟲再進階一下,於是找到了網上一些視訊看到有個用beautifulSoup實現模擬登入知乎,感覺挺容易上手的。下面,貼程式碼

import requests
from bs4 import BeautifulSoup

url = "https://www.zhihu.com/#signin"
#請求報頭 def zhihuLogin(url): headers = { "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" } # 構建一個session物件,用來儲存頁面cookies sion = requests.Session() #首先獲取登入介面,找到需要post的資料(_xsrf)同時記錄當前頁面的cookies值
html = sion.get(url,headers = headers).text #通過bs庫將頁面解析方便下面獲取需要post 的值 bs = BeautifulSoup(html,"lxml") #找到name屬性值為_xsrf的input標籤,並獲取其相應的value值 xsrf = bs.find("input",attrs{"name":"_xsrf"}).get("value") # 根據UNIX時間戳,匹配出驗證碼的URL地址 captcha_url = "https://www.zhihu.com/captcha.gif?r=%d&type=login"
% (time.time() * 1000) # 傳送圖片的請求,獲取圖片資料流, captcha_data = sess.get(captcha_url, headers = headers).content # 獲取驗證碼裡的文字,需要手動輸入 text = captcha(captcha_data) data = { "_xsrf":xsrf, "password":"*******",#由於個人隱私關係,這邊就不把摩瑪貼出來了 "captcha_type":"cn",#如果頁面有驗證碼的話就將表單裡面的這個新增text "email":"[email protected]" } response = requests.post("http://www.zhihu.com/login/email",data = data,headers = headers) #用已有的登入狀態cookies傳送請求,獲取目標頁面原始碼 response2 = sion.get("http://www.zhihu.com/people/lou-kun-20/activities",headers = headers) # 返回獲取到的目標頁面原始碼 bs2 = BeautifulSoup(response2.text,"lxml") print(bs2) #return response2.text zhihuLogin(url)
#此模組用於獲取登入時出現的驗證碼,由於目前還不會機器學習影象識別,所以只能將驗證碼下載到本地,手動輸入驗證碼實現登入,
def captcha(captcha_data):
    with open("captcha.jpg", "wb") as f:
        f.write(captcha_data)
    text = input("請輸入驗證碼:")
    # 返回使用者輸入的驗證碼
    return text

不知道怎麼回事,看著視訊上老師講的例項模擬的登入知乎是需要驗證碼的,但是在我機子上是怎麼都出不來驗證碼,於是就將驗證碼識別這個模組省略了,在這個模擬登入知乎的學習過程中,我瞭解到了某些資訊加密,因為知乎怎麼說也是個比較正式的商業網站,所以,使用者登入,為了防止跨域攻擊,所以網站會通過設定一個隱藏欄位來存放這個MD5字串,這個字串用來校驗使用者Cookie和伺服器Session的一種方式
這裡面科普一下:
_xsrf 作用是防止CSRF攻擊(跨站請求偽造),通常叫跨域攻擊,是一種利用網站對使用者的一種信任機制來做壞事,跨域攻擊通常通過偽裝成網站信任的使用者的請求(利用Cookie),盜取使用者資訊、欺騙web伺服器
其實模擬登入基本流程也就這樣,首先我們先要找到使用者點選登入所傳送的表單,然後將表單的內容都新增進去,然後,post進去資料,返回帶有cookies的session物件,最後用已有登入狀態的Cookie傳送請求,獲取目標頁面原始碼。就這麼簡單!當然,登入沒有驗證碼的網站現在是很少見了,我們實現模擬登陸的時候,這個驗證碼問題還是要看中的,還有不同的網站有不同的使用者資訊加密方式,但總歸都逃不了我們要將登入時的表單post進伺服器,只是可能有些網站的解密比較複雜。爬蟲的學問很多,還要selenium這些還沒學,以後慢慢來吧。

相關推薦

python爬蟲模擬登陸

自從暑假學了大概一個月左右的爬蟲,開學之後就沒怎麼搞爬蟲了,當時也就學到scrapy框架就放下了,大致瞭解了一下框架,不是太理解,但是在這之前本人的爬蟲水平也僅僅侷限於爬取簡單頁面,爬取動態頁面也稍微瞭解下,但是一直沒有學模擬登陸,因為當時怎麼也搞不懂模擬登陸是

Python 爬蟲-模擬登入-爬取拉勾職位資訊

用Python寫爬蟲是很方便的,最近看了xlzd.me的文章,他的文章寫的很到位,提供了很好的思路。因為他的文章部分程式碼省略了。下面是基於他的文章的三個程式碼片段: 基於Python3,Python2的話需要修改下input輸入函式和print的用法。 爬取豆瓣電影top250 爬取拉勾網職位資訊 模擬

Python爬蟲模擬登陸

在chrome瀏覽器下抓取登陸過程的包(注意把Preserve log勾上): 表單的結構主要包括_xsrf, password, phone_num 我們要找到_xsrf的值,重新載入zhihu.

利用python requests庫模擬登陸

當初搜模擬登陸的時候在知乎上也找到一些內容。 以下是程式碼 import requests import time import json import os import re import sys import subprocess from bs4 import Be

python爬蟲如何爬的話題?

write targe connect 問題 brush img fetchone new text 因為要做觀點,觀點的屋子類似於知乎的話題,所以得想辦法把他給爬下來,搞了半天最終還是妥妥的搞定了,代碼是python寫的,不懂得麻煩自學哈!懂得直接看代碼,絕對可用 #c

python爬蟲——爬取上自己關注的問題

與之前爬的網站圖片的不同的是,現在爬取的是要自己個人的關注的東西,所以需要做到模擬登入。模擬登入的原理是登入網站後,在瀏覽器上獲取儲存的cookies資訊,填充之後與請求一起傳送。如果前面的爬取圖片的會爬取了,對於這個解析字串的也沒有多大問題了。一直看著知乎上很多程式設計師把

Scrapy 模擬登陸--抓取熱點話題

折騰了將近兩天,中間數次想要放棄,還好硬著頭皮搞下去了,在此分享出來,希望有同等需求的各位能少走一些彎路。 原始碼放在了github上, 歡迎前往檢視。 若是幫你解決了問題,或者給了你啟發,不要吝嗇給加一星。 工具準備 在開始之前,請確保 scrpay 正確安裝,手頭有一款簡潔

最新,最新!selenium模擬登陸

md知乎的程式猿是幹什麼的我不知道,反爬真不一般,深受其害!!! 試了一千萬種方法,哎,終於呀(千萬不要被知乎的程式猿看到了,要不然就又要涼涼了),其他方法特別是用request的好像都失效了(哪位大神要是還能用告訴兄弟一聲) 算是半手動吧,selenium裡面的js模組

Python爬蟲爬取小結

最近學習了一點網路爬蟲,並實現了使用python來爬取知乎的一些功能,這裡做一個小的總結。網路爬蟲是指通過一定的規則自動的從網上抓取一些資訊的程式或指令碼。我們知道機器學習和資料探勘等都是從大量的資料出發,找到一些有價值有規律的東西,而爬蟲則可以幫助我們解決

使用OKHttp模擬登陸,兼談OKHttp中Cookie的使用!

本文主要是想和大家探討技術,讓大家學會Cookie的使用,切勿做違法之事!很多Android初學者在剛開始學習的時候,或多或少都想自己搞個應用出來,把自己學的十八般武藝全都用在這個APP上,其實這個想法很好,專案驅動學習,效率更高,這是大學老師教給我的。可是一個APP,如果純

通過Python爬蟲爬取某個問題下的圖片

該爬蟲的完整程式碼我把它放到了GitHub上,因為目前是在一點點的增加功能階段,所以程式碼可能沒有完善好,但是正常執行時沒有問題的,歡迎拍磚,:) 該爬蟲主要是通過requests來實現的,該模組完全可以很好的代替urllib和urllib2,而且功能更強大,詳細可以看這

模擬登陸,2016/10/23可用

登入這東西,目前理解的還是比較淺,就是說想辦法搞到cookie就好。最簡單就是自己用瀏覽器登入上,從開發者工具裡把cookie複製。。。 今天說的呢,既然是模擬登陸,就少不了賬號密碼這些環節。 首先開啟知乎https://www.zhihu.com/#signin,開發者工

【scrapy】模擬登陸

這個網上有個通用的教程,然而為這個教程已經花費了太多時間進行除錯,和知乎上的朋友交流,很多人也是這個地方遇到了問題,最後的結果。。是放棄了crawlspider。。 先貼下 這個連結。。。http://ju.outofmemory.cn/entry/105646 謹慎。。

用selenium模擬登陸賬號,處理登陸介面隨機出現驗證碼視窗的問題

import requests from selenium import webdriver from bs4 import BeautifulSoup import time while True: #option = webdriver.Chr

python爬蟲--模擬登錄

print url 開發 數字 pan tps 參數 content 開發者 1、處理登錄表單 處理登錄表單可以分為2步: 第一、查看網站登錄的表單,構建POST請求的參數字典; 第二、提交POST請求。 打開知乎登錄界面,https://www.zhi

[Python]網路爬蟲(三):使用cookiejar管理cookie 以及 模擬登入

大家好哈,上一節我們研究了一下爬蟲的異常處理問題,那麼接下來我們一起來看一下Cookie的使用。 為什麼要使用Cookie呢? Cookie,指某些網站為了辨別使用者身份、進行session跟蹤而儲存在使用者本地終端上的資料(通常經過加密) 比如說有些網站需要登入後才

python--python3爬蟲模擬登入

程式碼在python3環境下測試通過: from bs4 import BeautifulSoup import requests url = 'http://www.zhihu.com' login_url = url+'/login/email' captcha_

爬蟲入門到精通-headers的詳細講解(模擬登入

直接開始案例吧。 本次我們實現如何模擬登陸知乎。 1.抓包 首先開啟知乎登入頁 知乎 - 與世界分享你的知識、經驗和見解 注意開啟開發者工具後點擊“preserve log”,密碼記得故意輸入錯誤,然後點選登入   我們很簡單的就找到了 我們需要的請

Python網路爬蟲--模擬登陸教務處網站

本文主要介紹如何利用Python的requests庫實現學校教務處網站的模擬登陸。關於教務處網站模擬登陸的典型應用主要有課程格子、超級課程表等,教務處網站形式多種多樣,但登陸的基本流程類似,即構建表單-提交表單-實現登陸。本文以我浙的教務處網站為例進行模擬登陸演示。 登

爬蟲爬取登陸後首頁

package zhihu; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.jsoup.Connection; import org.