cookie
- cookie是存儲在用戶端的一組鍵值對
- cookie是由伺服器端建立
- cookie應用的簡單示例:
- 在爬蟲中處理cookie的兩種方式
- 手動處理
- 将cookie封裝到headers字典中,将該字典作用到get/post方法的headers參數中
- 自動處理
- Session對象。
- Session對象的建立:requests.Session()
- 對象的作用:
- 可以跟requests一樣調用get/post進行請求的發送。在使用session進行請求發送的過程中,如果産生了cookie,則cookie會被自動存儲到session對象中。
- 在爬蟲中使用session處理cookie時,session對象至少需要被用幾次?
- 兩次。第一次是為了捕獲和存儲cookie到session對象中,第二次就是用攜帶cookie的session進行請求發送,這次請求發送就是攜帶cookie發起的請求。
import requests
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'
}
#https://xueqiu.com/,将雪球網中的新聞資訊進行資料爬取
#分析:首頁第一屏的資料不是動态加載,但是滾輪滑動到底部後會動态加載出更多新聞資料
url = 'https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=20367942&count=15&category=-1'
json_data = requests.get(url=url,headers=headers).json()
json_data
#沒有捕獲到正确的資料,原因在于我們進行請求發送的時候沒有在請求頭中攜帶cookie
#基于session自動處理cookie
sess = requests.Session()
#該次請求隻是為了捕獲cookie存儲到sess中
sess.get(url='https://xueqiu.com/',headers=headers)
url = 'https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=20367942&count=15&category=-1'
json_data = sess.get(url=url,headers=headers).json()
json_data