網(wǎng)絡(luò)請(qǐng)求 requests
import requests
作用: 發(fā)送網(wǎng)絡(luò)請(qǐng)求,返回響應(yīng)數(shù)據(jù),requests對(duì)象的get和post方法都會(huì)返回一個(gè)Response對(duì)象,這個(gè)對(duì)象里面存的是服務(wù)器返回的所有信息,包括響應(yīng)頭,響應(yīng)狀態(tài)碼等。其中返回的網(wǎng)頁(yè)部分會(huì)存在.content和.text兩個(gè)對(duì)象中。
根據(jù)網(wǎng)絡(luò)接口請(qǐng)求數(shù)據(jù):通過(guò)第三方庫(kù)requests提供的方法
1.獲取網(wǎng)絡(luò)數(shù)據(jù)
response = requests.get(url)
response = requests.get('http://wimg.spriteapp.cn/profile/large/2017/10/05/59d644960c99b_mini.jpg')
print(response)
獲取字符串形式的數(shù)據(jù)結(jié)果
text = response.text
print(type(text), text)
獲取二進(jìn)制數(shù)據(jù)
data = response.content
print(type(data), data)
with open('img.jpg', 'wb') as f:
f.write(data) # 獲取的圖片信息,并寫入一個(gè)文件里面
response.text 和response.content的區(qū)別
response.text
類型:str
解碼類型:根據(jù)HTTP頭部對(duì)響應(yīng)的編碼做出有根據(jù)的推測(cè),推測(cè)的文本編碼
如何修改編碼方式:response.encoding=”gbk”
response.content
類型:bytes
解碼類型:沒(méi)有指定
如何修改編碼方式:response.content.decode(“utf8”)
兩者區(qū)別在于,content中間存的是字節(jié)碼,而text中存的是Beautifulsoup根據(jù)猜測(cè)的編碼方式將content內(nèi)容編碼成字符串。
直接輸出content,會(huì)發(fā)現(xiàn)前面存在b’這樣的標(biāo)志,這是字節(jié)字符串的標(biāo)志,而text是,沒(méi)有前面的b,對(duì)于純ascii碼,這兩個(gè)可以說(shuō)一模一樣,對(duì)于其他的文字,需要正確編碼才能正常顯示。大部分情況建議使用.text,因?yàn)轱@示的是漢字,但有時(shí)會(huì)顯示亂碼,這時(shí)需要用.content.decode(‘utf-8’),中文常用utf-8和GBK,GB2312等。這樣可以手工選擇文字編碼方式。
所以簡(jiǎn)而言之,.text是現(xiàn)成的字符串,.content是字節(jié)碼還要編碼,但是.text不是所有時(shí)候顯示都正常,這是就需要用.content進(jìn)行手動(dòng)編碼。
獲取json數(shù)據(jù)
message = response.json()
print(type(message), message)
print(message['data'])