爬知乎了解BeautifulSoup用法

2021-08-09 17:56:05 字數 1437 閱讀 3775

text=raw_input(("請輸入驗證碼:").encode("gb18030"))

return text

def zhihu():

sess=requests.session()

#請求報頭

#首先獲取登入頁面,找到需要post的資料(_xsrf),同時會記錄當前網頁的cookie值

html=sess.get("",headers=headers).text

#呼叫lxml解析庫

bs=beautifulsoup(html,'lxml')

#獲取之前get的頁面裡的_xsrf值

#_xsrf作用是防止csrf(跨站請求偽造),通常叫跨站攻擊,是一種利用**對使用者的一種信任機制來做壞事

#跨站攻擊通常通過偽裝成**信任的使用者的請求(cookie),盜取使用者資訊,欺騙微博伺服器

#所以**會通過設定乙個隱藏的字段來訪問這個md5碼字串,這個字串用來校驗使用者cookie和伺服器session的一致性

_xsrf=bs.find("input",attrs=).get("value")#bixpath好用點,更容易獲取html中我們需要的資料

captcha_url=""%(time.time()*1000)

captcha_data=sess.get(captcha_url,headers=headers).content#傳送請求,獲取二進位制資料流

#獲取驗證碼需要手動輸入

text=captcha(captcha_data)

data=

response=sess.post("",data=data,headers=headers)

# print response.text.encode("gb18030")#列印登入成功的頁面

#登入頁面獲取到cookie後,可以訪問任何地方,比如訪問個人主頁

html=sess.get("",headers=headers).text

print html

if __name__=="__main__":

zhihu()我們要先通過抓包工具獲取form裡面需要登入的條件,比如知乎需要獲取隱藏的字段_xsrf,還有賬號,密碼,驗證碼,所以先要在登入頁面找到_xsrf的value值,賬戶,密碼,驗證碼獲取的方法,需要獲取驗證碼的資料流,然後儲存在本地,開啟驗證碼,手動輸入,最終加入data中,通過post方法向伺服器傳送請求登入頁面,sess儲存cookie值,最終我們可以通過cookie值get任何地方。

爬去知乎分析

目前還在進行階段 我的目的是爬去知乎熱榜五十的回答,分為只爬去靜態返回的頁面和爬去非同步返回的資料。首先開始查詢知乎前五十需要登入,但是我並不想處理登入。分析一波 先用瀏覽器登入一下進去,記住密碼,之後再進入頁面知乎就可以,這是為什麼?猜想可能是將密碼儲存在cookie裡面的,於是f12在cooki...

python動態爬取知乎 python爬取微博動態

在初學爬蟲的過程中,我們會發現很多 都使用ajax技術動態載入資料,和常規的 不一樣,資料是動態載入的,如果我們使用常規的方法爬取網頁,得到的只是一堆html 沒有任何的資料。比如微博就是如此,我們可以通過下滑來獲取更多的動態。對於這樣的網頁該如何抓取呢?我們以微博使用者動態為例,抓取某名使用者的文...

知乎資料爬取及儲存

import requests from pymysql conn import mysql connect url 分析所有請求後發現上面的url可以直接獲取所需資料的json檔案,兩個引數分 別為offset,limit。其中offset控制起始資料序號,limit控制本次資料數量 經測試off...