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