之前的文章中講到逊朽,有很多網(wǎng)站為了防止爬蟲(chóng)程序爬網(wǎng)站造成網(wǎng)站癱瘓,所以我們的程序在模擬瀏覽器訪問(wèn)這些網(wǎng)站時(shí)闸溃,需要攜帶一些headers頭部信息才能訪問(wèn)揩瞪,最常見(jiàn)的有User-Agent、referer拧略、cookie參數(shù)芦岂。那么針對(duì)cookie參數(shù)的處理 ,有以下兩種方式辑鲤。
直接攜帶cookie請(qǐng)求url地址
- cookie放在headers中盔腔。這種方式與headers中攜帶User-Agent一樣,只需要將cookie字符串放在headers字典中即可月褥。
headers = {'User-Agent': '......',
'Cookie':'cookie字符串'}
requests.post(url, date, headers=headers)
- cookie字典傳給cookies參數(shù)弛随。這種方式需要新增一個(gè)cookie的字典,再將該參數(shù)傳給cookies參數(shù)宁赤。寫(xiě)一個(gè)簡(jiǎn)單的例子:Cookie:OUTFOX_SEARCH_USER_ID=-1514949692@10.169.0.83; JSESSIONID=aaasMk1xexHQo77h5hWSw; OUTFOX_SEARCH_USER_ID_NCOO=253932778.30526197; ___rl__test__cookies=1559880583877舀透,“=”左邊為參數(shù),“=”右邊為值决左。
Cookie_dirt = { 'OUTFOX_SEARCH_USER_ID'= '-1514949692@10.169.0.83',
'JSESSIONID'='aaasMk1xexHQo77h5hWSw',
'OUTFOX_SEARCH_USER_ID_NCOO'='253932778.30526197',
'___rl__test__cookies'='1559880583877'
}
requests.post(url, date, headers=headers, Cookie=Cookie_dirt)
使用session
假如我們現(xiàn)在要登陸一個(gè)網(wǎng)站愕够,需要輸入用戶名(username)和密碼(password),那么我們可以先發(fā)送一次post請(qǐng)求佛猛,獲取到cookie惑芭,然后再攜帶cookie請(qǐng)求登陸之后的頁(yè)面。使用這種方法继找,我們需要用的session遂跟。使用session發(fā)送一次請(qǐng)求,那么服務(wù)器設(shè)置在本地的Cookie婴渡,則會(huì)直接保存在session中幻锁,此時(shí)我們?cè)儆胹ession.get直接請(qǐng)求登陸后的界面。寫(xiě)一個(gè)簡(jiǎn)單的例子如下:
import requests
#實(shí)例化session
s = requests.session()
post_url = '登錄界面的url'
headers = {}
post_data = {'username': '',
'password': ''}
s.post(post_url, headers=headers, post_data=post_data)
#再使用session請(qǐng)求登陸后的頁(yè)面
url = '登陸后的頁(yè)面url'
response = s.get(url, headers=headers)