爬虫学习笔记(三)—— requests库
Requests 是用Python語言編寫,基于 urllib,采用 Apache2 Licensed 開源協(xié)議的 HTTP 庫。它比 urllib 更加方便,可以節(jié)約我們大量的工作,完全滿足 HTTP 測試需求。Requests 的哲學(xué)是以 PEP 20 的習(xí)語為中心開發(fā)的,所以它比 urllib 更加 Pythoner。更重要的一點是它支持 Python3 。requests目前基本上完全滿足web請求的所有需求,requests庫常用的方法有:get、post、put、delete、head、options
一、安裝
通過pip安裝(注意這里的requests記得加s)
pip install requests二、發(fā)送請求
使用 Requests 發(fā)送網(wǎng)絡(luò)請求非常簡單。導(dǎo)包,之后添加方法進(jìn)行發(fā)起請求的方法變得簡單,我們只需要著重關(guān)注一下發(fā)起請求的參數(shù) ,10個重要的參數(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:添加請求頭,在進(jìn)行爬蟲時添加headers很有必要,如果不添加,很可能把你禁掉
cookies: 字典或CookieJar對象
timeout:設(shè)置的超時時間,秒為單位
proxies:字典類型,設(shè)定訪問代理服務(wù)器,可以增加登錄認(rèn)證
(注意:設(shè)置的代理ip必須是能用的,有需要的建議網(wǎng)上購買)
allow_redirects: 值為True/False,默認(rèn)為True, 重定向開關(guān)
很多網(wǎng)站是http開頭,為了不影響老客戶,原網(wǎng)站不懂,當(dāng)訪問http的原網(wǎng)址時,重定向到新的https網(wǎng)址,在requests中 allow_redirects默認(rèn)是True,如果是False則不允許重定向,也就無法重定向新網(wǎng)址獲取數(shù)據(jù)。
verify:值為True/False,默認(rèn)為True, 忽略證書驗證
(我們訪問的網(wǎng)址出現(xiàn)不安全時,這時就會出現(xiàn)關(guān)于SSL的報錯,verify設(shè)置false就可以爬取了)
Json:JSON格式的數(shù)據(jù),作為requests的內(nèi)容
POST請求發(fā)送Json數(shù)據(jù):
data: 是第二個控制參數(shù),向服務(wù)器提交數(shù)據(jù)
POST請求發(fā)送Form表單數(shù)據(jù):
注意:json 和 data 不可以同時添加,同時添加會造成json中沒有數(shù)據(jù)
三、response對象
常用屬性:
import requests test_url="http://httpbin.org/get"#測試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"])#自動轉(zhuǎn)換成 字典格式 print(res.headers)#響應(yīng)頭 print(res.cookies)#響應(yīng)cookie print(res.url)#請求的url print(res.request.url)#請求的url print(res.request.headers)#請求頭四、session方法
session方法是requests庫發(fā)起請求的一種方法,這種方法會自動保存訪問頁面得到的cookie值,從而再次訪問的時候會自動攜帶cookie,使得操作cookie方便,不需要我們自己添加cookie了。常用于登錄;
requests與session發(fā)起請求對比
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("請求頭信息********requests*******") print(res.request.headers)結(jié)果: 請求頭信息********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對象 session.headers=headers#添加請求頭 res_ss=session.get(index_url) print("請求頭信息********session*******") print(res_ss.request.headers)結(jié)果: 請求頭信息********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库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爬虫学习笔记(二)——使用 reques
- 下一篇: 爬虫学习笔记(四)—— urllib 与