requests模塊是python的一個第三方模塊,它是基於python自帶的urllib模塊封裝的,用來發送http請求和獲取返回的結果,操做很簡單。python
requests模塊是第三方模塊,不是python自帶的,須要安裝纔可使用。json
pip requests installsublime-text
發送get請求
一、不帶參數、 返回結果爲字符串類型:可使用res.json() 來轉成字典api
import requestscookie
url = ''www.baidu.com'
res = requests.get(url)
print(res.json())session
二、 帶參數的get請求post
url3 = 'http://118.24.3.40/api/user/stu_info'
param= {'stu_name':'小黑'}
res = requests.get(url3,params=param)
print(res.json())測試
三、入參須要傳入header網站
url6 = 'http://118.24.3.40/api/user/all_stu'
header = {'Referer':'http://api.nnzhp.cn/'}
res =requests.get(url6,headers=header)
print(res.json())url
post請求
一、入參是字典類型的
url2 = 'http://118.24.3.40/api/user/login'
data = {'username':'niuhanyang','passwd':'aA123456'}
res = requests.post(url2,data=data)
print(res.json())
二、入參是json類型的 注意:使用requests的post方式時候,要傳遞json的值
url4 = 'http://118.24.3.40/api/user/add_stu'
data = {"name":"maomaochongzi",
"grade":"1年級",
"phone":"15801427140",
"sex":"男",
"age":"18",
"addr":"beijing"
}
res = requests.post(url4,json=data)
print(res.json())
三、入參需傳遞cookie
url5 = 'http://118.24.3.40/api/user/gold_add'
data = {'stu_id':15,'gold':200}
cookie = {'niuhanyang':'35b103503b9f428f1e8a2e258cb2a172'}
res = requests.post(url5,data=data,cookies = cookie)
print(res.json())
四、上傳文件,入參爲文件類型
url9 = 'http://118.24.3.40/api/file/file_upload'
data = {'file':open('魔鬼天使.mp3','rb')}
res = requests.post(url9,files = data)
print(res.json())
五、下載文件 二進制類型
url9 = 'http://qiniuuwmp3.changba.com/1084511584.mp3'
res = requests.post(url9)
with open('天數惡魔.p3',wb) as frw
fw.write(res.content)
六、若是url是https開頭的 ,須要加verify = False
url8='https://aliimg.changba.com/cache/photo/855e5493-f018-44db-8892-c8660649327b_640_640.jpg'
res = requests.get(url8,verify = False)
with open('a.jpg','wb') as fw:
fw.write(res.content)
res.json() 必須返回的是json才能夠用 返回的是字典
res.text 下載文件的話text就不行了 返回的是字符串
res.content 用來下載文件用的 返回的是二進制的
res.cookies 獲取到返回的全部cookie
res.headers 獲取到返回的全部herder
有一些網站,好比說下載東西的時候有http的權限驗證,沒有驗證話就返回401 請求未經受權這種錯誤的。通常都是須要http權限驗證,下面是怎麼添加http權限驗證。
固然這個http權限認證是http自己的,和你那些登錄請求那些不同,好比說你要調一個登錄接口,傳入的帳號密碼,和那個不是一回事,要區別開。
舉個例子呢就是商場的大門上的鎖就是這個http權限驗證,這個鎖是人家商場的,而你的店鋪的鎖纔是你登錄接口,你輸入的帳號密碼。通常你一打開一個網站直接彈出來一個窗口讓你輸入帳號密碼,你都看不到頁面,這種就是http權限驗證。而那種你打開網站以後,直接就能看到頁面,你要登陸的時候,輸入帳號密碼而後點登陸的,這種的就是正常的登錄請求。這種http權限驗證的比較少見。
什麼是會話保持,就是有一些操做須要登陸以後才操做的,你得先登陸,而後才能作其餘的操做。那我們作的時候怎麼作,先發送登錄的請求,獲取到登陸的cookie信息,(由於登陸以後它的身份驗證信息都是放在cookie裏面的),而後把cookie傳給下一個你要請求的url,這樣就ok了,看下面代碼。
import requests
r1=requests.post('http://www.nnzhp.cn/login',data={'username':'besttest','password':'123456'})#登錄請求
login_cookies = r1.cookies #獲取到登錄請請求返回的cookie,把登錄獲取到的cookie,傳給發表文章的這個請求,就ok了
r2 = requests.post('http://www.nnzhp.cn/create_user',data={'title':'測試測試','content':'發送文章測試'},cookies=login_cookies)
print(r2.text)
requests模塊給我們提供了更簡單的方式,就是使用requests.session這個方法,它會自動幫我們管理cookie,不須要我們本身再獲取到登錄的cookie,傳給建立文件的請求,代碼以下:
import requests
r=requests.session()
login_req = r.post('http://www.nnzhp.cn/login',data={'username':'besttest','password':'123456'}) #發送登錄的請求
r1 = r.post('http://www.nnzhp.cn/create_user',
data={'title':'測試測試','content':'發送文章測試'}) #發送建立文件的請求
print(r1.text)#獲取返回的結果
咱們在寫爬蟲的時候,若是都用同一個ip訪問屢次訪問某個網站,常常ip會被封,這樣咱們就訪問不了了,那怎麼解決呢,就得用ip代理了,代理的意思就是我們把請求先發到代理上,而後再由代理幫我們把請求發送出去,這樣最終訪問網站的ip就不是我們本身的ip了。網上代理有不少,大多數收費的代理網站上天天都會有幾個免費的代理,我先從https://www.kuaidaili.com/free/inha/ 這個裏面找了幾個免費的代理,設置代理的代碼以下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import
requests
#不帶帳號密碼的代理
posix
=
{
'http'
:
'http://119.187.75.46:9000'
,
#http
'https'
:
'http://112.95.18.133:9000'
,
#https
}
res
=
requests
.
get
(
'http://www.nnzhp.cn'
,
proxies
=
posix
)
.
text
print
(
res
)
#帶帳號密碼的代理
posix
=
{
'http'
:
'http://user:password@127.0.0.1:9000'
,
#http
'https'
:
'http://user:password@127.0.0.1:9000'
,
#https
}
res
=
requests
.
get
(
'http://www.nnzhp.cn'
,
proxies
=
posix
)
.
text
print
(
res
)
|