python 爬蟲 1-1( requests.session()會話保持/模擬登錄狀態 )

寫在前面

在某些網站抓取,或者app抓取時,有的時強制登陸,有的是不登陸返回的數據就是假的或者說是不完整的數據,這時就需要用到保持會話的功能

1、requests.session簡單例子

參考源:https://www.cnblogs.com/qican/p/11153824.html

requests庫的session對象能夠幫我們跨請求保持某些參數,也會在同一個session實例發出的所有請求之間保持cookies
在這裏插入圖片描述
代碼

import requests
s = requests.Session()
s.get('https://httpbin.org/get')

requests.Session().get()和requests.get(),除了前者能傳遞cookie參數以外,其他的一致

2、模擬百度登錄

首先我們打開百度,查看登錄後百度賬號的cookies值,經過觀察發現是由”BAIDUID“和"BDUSS"記錄登錄狀態
在這裏插入圖片描述
在這裏插入圖片描述
在網頁裏面登錄後,複製”BAIDUID“和"BDUSS"這兩個參數的值

# coding:utf-8
import requests
# 保持登錄狀態
s = requests.session()
url = 'https://www.baidu.com/'
# 請求頭
headers = {
     "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36"
}
r = s.post(url,headers=headers)
# 查看的cookies值
cooks = {
    "BDUSS":"xxxxxxx",
    "BAIDUID":"XXXXXXXX"
}
# 添加登錄所攜帶的cookies
c = requests.cookies.RequestsCookieJar()
c.set("BDUSS",cooks["BDUSS"])
c.set("BAIDUID",cooks["BAIDUID"])
s.cookies.update(c)
# 判斷是否登錄成功
r2 = s.get(url,headers=headers)
if '換膚' in r2.text:
    print('登錄成功')
else:
    print("登錄失敗")



### 運行結果:登錄成功

這裏爲什麼要if ‘換膚’在r2裏,因爲登錄前頁面代碼裏是沒有這個詞的,登錄後纔有

登錄前:
在這裏插入圖片描述
登陸後:
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章