爬蟲如何利用session方法保持登陸狀態(selenium)

藍色櫻桃發表於2020-11-12

爬取網站頁面時需要登入後才能訪問,否則獲取不到頁面的實際響應資料

有些網站需要我們登陸才能獲取訪問資料,然而往往登陸頁和所要爬取的資料不在同一頁面,這裡一般都會想到對cookies進行處理的方法,如下所示:

   1、先成功登入1次,獲取到cookies,處理為字典
   2、再改送請求,requests.get(xxx, cookies=cookies)

然而requests模組為我們提供一個更加方便的方法,名為session,可以幫助我們維持客戶端和服務端的會話狀態而不斷開:

	# 1、例項化session物件
   		session = requests.session()
   		
	# 2、讓session物件傳送get或者post請求
		post_data = {'email':'','password':''}
  	 	res = session.post(url=url, data=post_data, headers=headers)	# 登陸
  		res = session.get(url=url, headers=headers)

原理

瀏覽器原理: 訪問需要登入的頁面會帶著之前登入過的cookie
程式原理: 同樣帶著之前登入的cookie去訪問 - 由session物件完成
1、例項化session物件
2、登入網站: session物件傳送請求,登入對應網站,把cookie儲存在session物件中
3、訪問頁面: session物件請求需要登入才能訪問的頁面,session能夠自動攜帶之前的這個cookie,進行請求

selenium實現

模擬點選,再用switch_to切換網頁

相關文章