1requests基本使用
主要有g(shù)et/post/put三種方式,返回的是響應(yīng)對(duì)象(response object):
res = resquests.get/post/put(url,params,data,...)
對(duì)于每種方式(method)译柏,其可傳遞的參數(shù)包括以下 額 好多種:
參數(shù) | 說(shuō)明 | 煮個(gè)小栗子 |
---|---|---|
url | 待獲取頁(yè)面的url鏈接 | requests.get("http://tieba.baidu.com") |
params | 將字典或字節(jié)序列作為參數(shù)添加到url中 | kw={"kw":"李毅"} requests.get(url,params=kw) # 得到的res為“http://tieba.baidu.com/f?kw=李毅” |
data | 字典镣煮,字節(jié)序列或文件對(duì)象,作為res的內(nèi)容 | 待補(bǔ)充 |
headers | 字典艇纺,HTTP定制頭 | header = {"User-Agent":"Mozilla/5.0"} resq.get(url,headers=header) |
timeout | 設(shè)定超時(shí)時(shí)間怎静,單位為秒 | |
proxies | 字典類(lèi)型,設(shè)定訪問(wèn)代理服務(wù)器 | proxie={"http:":"http://12.34.56.79:9527"} resq.get(url,proxies=proxie) |
verify | 認(rèn)證SSL證書(shū)開(kāi)關(guān)黔衡,默認(rèn)為False | |
json | JSON格式的數(shù)據(jù)蚓聘,作為resquests的內(nèi)容 | |
auth | 元祖,支持HTTP認(rèn)證功能 |
1.1 基本get請(qǐng)求
# ===============1盟劫、基本GET請(qǐng)求---百度搜索頁(yè)=====================
kw = {'wd':'花梨'}
res_1 = requests.get('https://www.baidu.com/',params=kw,headers=headers)
# 網(wǎng)頁(yè)內(nèi)容亂碼夜牡,默認(rèn)編碼是ISO-8859-1,修改
res_1.encoding = 'utf-8'
# 查看返回對(duì)象類(lèi)型和內(nèi)容---response對(duì)象
print(type(res_1)) # <class 'requests.models.Response'>
print(res_1.text) # 返回的是Unicode格式的str數(shù)據(jù)
print(res_1.content) # 返回的是二進(jìn)制字節(jié)流(bytes)數(shù)據(jù)
#查看完整url地址侣签,塘装,響應(yīng)頭部字符編碼 和響應(yīng)碼
print(res_1.url) # https://www.baidu.com/
print(res_1.encoding) # utf-8
print(res_1.status_code) # 200
1.2 基本POST請(qǐng)求
對(duì)于POST請(qǐng)求,一般需要增加一些參數(shù)影所,最基本的利用data參數(shù)
# =======2蹦肴、基本post請(qǐng)求,有道詞典翻譯==============
formdata = {
"type":"AUTO",
"i":"i love python",
"doctype":"json",
"keyfrom":"fanyi.web",
"ue":"utf-8",
"action":"FY_BY_ENTER",
"typeResult":"true"
}
url_2 = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"
res_2 = requests.post(url_2,data=formdata,headers=headers)
print(res_2.text)
print(res_2.json()) # json文件可以直接顯示
1.3 與urllib urllib2的區(qū)別
- (1)輸入kw等參數(shù)時(shí)
在requests中猴娩,params可以接收字典類(lèi)型的參數(shù)
kw={"kw":"李毅"}
requests.get(url,params=kw) # 此時(shí)requests自動(dòng)將kw自動(dòng)轉(zhuǎn)為url形式
但是在urllib中:
kw={"kw":"李毅"}
kw = urllib.urlencode(kw) #將字典形式轉(zhuǎn)換為url編碼格式(字符串)
newurl = url +"?"+ kw
- (2)返回html內(nèi)容時(shí)
在得到response對(duì)象后阴幌,res可以以兩種形式返回網(wǎng)頁(yè)內(nèi)容
html = res.text # 返回的是str格式的文本內(nèi)容
html = res.content # 返回的是bytes格式的二進(jìn)制字節(jié)流勺阐,可以用來(lái)存儲(chǔ)圖片等內(nèi)容
而在urllib中,
res = urllib.request.urlopen(url) # response對(duì)象
html = res.read()
print(type(html)) # <class 'bytes'>
print(html) # bytes格式
html = html.decode() # 將bytes格式轉(zhuǎn)為str
print(html) # str格式
2 XPath解析html頁(yè)面
2.0 前提知識(shí)
關(guān)于DOM矛双、HTML渊抽、XML的簡(jiǎn)單概念和關(guān)系參考我寫(xiě)的另一篇雜文DOM 及 HTML和XML