爬虫学习笔记(三)—— requests库
Requests 是用Python語(yǔ)言編寫(xiě),基于 urllib,采用 Apache2 Licensed 開(kāi)源協(xié)議的 HTTP 庫(kù)。它比 urllib 更加方便,可以節(jié)約我們大量的工作,完全滿足 HTTP 測(cè)試需求。Requests 的哲學(xué)是以 PEP 20 的習(xí)語(yǔ)為中心開(kāi)發(fā)的,所以它比 urllib 更加 Pythoner。更重要的一點(diǎn)是它支持 Python3 。requests目前基本上完全滿足web請(qǐng)求的所有需求,requests庫(kù)常用的方法有:get、post、put、delete、head、options
一、安裝
通過(guò)pip安裝(注意這里的requests記得加s)
pip install requests二、發(fā)送請(qǐng)求
使用 Requests 發(fā)送網(wǎng)絡(luò)請(qǐng)求非常簡(jiǎn)單。導(dǎo)包,之后添加方法進(jìn)行發(fā)起請(qǐng)求的方法變得簡(jiǎn)單,我們只需要著重關(guān)注一下發(fā)起請(qǐng)求的參數(shù) ,10個(gè)重要的參數(shù)。
def request(url,params=None, headers=None, cookies=None,timeout=None,allow_redirects=True, proxies=None,verify=None, data=None,json=None):passparams:字典或者字節(jié)序列,作為參數(shù)增加到url中
headers:添加請(qǐng)求頭,在進(jìn)行爬蟲(chóng)時(shí)添加headers很有必要,如果不添加,很可能把你禁掉
cookies: 字典或CookieJar對(duì)象
timeout:設(shè)置的超時(shí)時(shí)間,秒為單位
proxies:字典類型,設(shè)定訪問(wèn)代理服務(wù)器,可以增加登錄認(rèn)證
(注意:設(shè)置的代理ip必須是能用的,有需要的建議網(wǎng)上購(gòu)買(mǎi))
allow_redirects: 值為T(mén)rue/False,默認(rèn)為T(mén)rue, 重定向開(kāi)關(guān)
很多網(wǎng)站是http開(kāi)頭,為了不影響老客戶,原網(wǎng)站不懂,當(dāng)訪問(wèn)http的原網(wǎng)址時(shí),重定向到新的https網(wǎng)址,在requests中 allow_redirects默認(rèn)是True,如果是False則不允許重定向,也就無(wú)法重定向新網(wǎng)址獲取數(shù)據(jù)。
verify:值為T(mén)rue/False,默認(rèn)為T(mén)rue, 忽略證書(shū)驗(yàn)證
(我們?cè)L問(wèn)的網(wǎng)址出現(xiàn)不安全時(shí),這時(shí)就會(huì)出現(xiàn)關(guān)于SSL的報(bào)錯(cuò),verify設(shè)置false就可以爬取了)
Json:JSON格式的數(shù)據(jù),作為requests的內(nèi)容
POST請(qǐng)求發(fā)送Json數(shù)據(jù):
data: 是第二個(gè)控制參數(shù),向服務(wù)器提交數(shù)據(jù)
POST請(qǐng)求發(fā)送Form表單數(shù)據(jù):
注意:json 和 data 不可以同時(shí)添加,同時(shí)添加會(huì)造成json中沒(méi)有數(shù)據(jù)
三、response對(duì)象
常用屬性:
import requests test_url="http://httpbin.org/get"#測(cè)試url res=requests.get(url=test_url) print(res.text)#直接轉(zhuǎn)換成字符串 非字節(jié)碼 print(res.content)#圖片數(shù)據(jù) 使用此參數(shù) print(res.status_code)#狀態(tài)碼 print(res.json()["headers"]["User-Agent"])#自動(dòng)轉(zhuǎn)換成 字典格式 print(res.headers)#響應(yīng)頭 print(res.cookies)#響應(yīng)cookie print(res.url)#請(qǐng)求的url print(res.request.url)#請(qǐng)求的url print(res.request.headers)#請(qǐng)求頭四、session方法
session方法是requests庫(kù)發(fā)起請(qǐng)求的一種方法,這種方法會(huì)自動(dòng)保存訪問(wèn)頁(yè)面得到的cookie值,從而再次訪問(wèn)的時(shí)候會(huì)自動(dòng)攜帶cookie,使得操作cookie方便,不需要我們自己添加cookie了。常用于登錄;
requests與session發(fā)起請(qǐng)求對(duì)比
import requestsindex_url="http://www.baidu.com" headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"} res=requests.get(index_url,headers=headers) print("請(qǐng)求頭信息********requests*******") print(res.request.headers)結(jié)果: 請(qǐng)求頭信息********requests******* {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'BAIDUID=835160CB3530E3CFD5EB427D5E848CD0:FG=1; BIDUPSID=835160CB3530E3CF266788D53A9B383D; PSTM=1626055033; BD_LAST_QID=17570873450330636283'} #session的使用 index_url="http://www.baidu.com" headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"} session=requests.session()#創(chuàng)建session對(duì)象 session.headers=headers#添加請(qǐng)求頭 res_ss=session.get(index_url) print("請(qǐng)求頭信息********session*******") print(res_ss.request.headers)結(jié)果: 請(qǐng)求頭信息********session******* {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36', 'Cookie': 'BAIDUID=11D1727367960A85924002C72FF29721:FG=1; BIDUPSID=11D1727367960A851936876B050ED76B; PSTM=1626055034; BD_LAST_QID=14539128174352067748'}總結(jié)
以上是生活随笔為你收集整理的爬虫学习笔记(三)—— requests库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 爬虫学习笔记(二)——使用 reques
- 下一篇: 爬虫学习笔记(四)—— urllib 与