安裝
pip install requests
請(qǐng)求目標(biāo)網(wǎng)站
response = requests.get(“含 http:// 開(kāi)頭的URL”) #返回HTTPresponse類(lèi)型
結(jié)果屬性
r = requests.get('http://www.baidu.com')
#結(jié)果屬性可以print顯示內(nèi)容
r.status_code # 狀態(tài)碼
r.url # 請(qǐng)求url
r.headers # 頭信息
r.cookies # cookie信息
r.text #網(wǎng)頁(yè)源碼文本形式
r.content #網(wǎng)頁(yè)源碼字節(jié)流形式(二進(jìn)制形式)
各種請(qǐng)求方式
import requests as r
r.get('http://URL')
r.post('http://URL')
r.put('http://URL')
r.delete('http://URL')
r.head('http://URL')
r.options('http://URL')
帶參數(shù)請(qǐng)求
- 請(qǐng)求時(shí)參數(shù)直接放到url里筝闹,如get請(qǐng)求的 action.php?參數(shù)x=xxx&參數(shù)y=yyy
- 參數(shù)作為字典傳遞冒签,如下:
import requests as r
data = {
'name': 'tom',
'age': 20
}
r.get('http://URL', params=data)
請(qǐng)求參數(shù)params是個(gè)字典
HTTPresponse對(duì)象解析json方法
response.json() #等價(jià)于 json.loads(response.text) # 解析后返回字典類(lèi)型對(duì)象
保存二進(jìn)制文件(下載圖片等)
response = requests.get('http://URL.jpg')
with open('F://fengjing.jpg','wb') as f:
f.write(response.content)
請(qǐng)求添加頭信息
heads = {}
heads['User-Agent'] = 'Mozilla/5.0 ' \
'(Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 ' \
'(KHTML, like Gecko) Version/5.1 Safari/534.50'
requests.get('http:URL',headers=heads)
請(qǐng)求頭參數(shù)headers是一個(gè)字典
使用代理
proxy = {
'http':'120.25.253.234:812',
'https':'163.125.222.244:8123'
}
requests.get(url, proxies=proxy)
代理參數(shù)proxies是一個(gè)字典
POST提交數(shù)據(jù)
data = {
'name':'tom',
'age':'22'
}
requests.post(url, data=data)
Post數(shù)據(jù)參數(shù)data是個(gè)字典
獲取cookie
import requests
response = requests.get('http://www.baidu.com')
print(response.cookies)
print('***'*10)
print(type(response.cookies))
print('***'*10)
for k,v in response.cookies.items():
print(k+':'+v)
會(huì)話維持
import requests
session = requests.Session()
session.get('http://httpbin.org/cookies/set/number/12345')
response = session.get('http://httpbin.org/cookies')
print(response.text)
證書(shū)驗(yàn)證設(shè)置
import requests
from requests.packages import urllib3
urllib3.disable_warnings() #從urllib3中消除警告
response = requests.get('https://www.12306.cn',verify=False) #證書(shū)驗(yàn)證設(shè)為FALSE
print(response.status_code)
打印結(jié)果:200
超時(shí)異常捕獲
import requests
from requests.exceptions import ReadTimeout
try:
res = requests.get('http://httpbin.org', timeout=0.1)
print(res.status_code)
except ReadTimeout:
print(timeout)
異常處理
在你不確定會(huì)發(fā)生什么錯(cuò)誤時(shí)捏雌,盡量使用try...except來(lái)捕獲異常
import requests
from requests.exceptions import ReadTimeout,HTTPError,RequestException
try:
response = requests.get('http://www.baidu.com',timeout=0.5)
print(response.status_code)
except ReadTimeout:
print('timeout')
except HTTPError:
print('httperror')
except RequestException:
print('reqerror')