Requests is an elegant and simple HTTP library for Python, built for human beings.
requests素以簡潔、友好著稱,高度整合了python中urllib包並有很多人性化的方法可以使用,所以我們今天就來說一說requests。 就從基本用法開始
In [1]: import requests
In [2]: res = requests.get('http://www.baidu.com')
In [3]: res.status_code
Out[3]: 200
In [4]: res.reason
Out[4]: 'OK'
In [5]: type(res.text)
Out[5]: str
In [6]: res.text[:15]
Out[6]: '<!DOCTYPE html>'
In [7]: res.content[:15]
Out[7]: b'<!DOCTYPE html>'
In [8]: type(res.content)
Out[8]: bytes
In [9]: res.headers['content-type']
Out[9]: 'text/html'
In [10]: res.cookies
Out[10]: <RequestsCookieJar[Cookie(version=0, name='BDORZ', value='27315', port=None, port_specified=False, domain='.baidu.com', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires=1532703485, discard=False, comment=None, comment_url=None, rest={}, rfc2109=False)]>
複製程式碼
以上方法都是requests常用的一些方法,content是以位元組的方式訪問請求響應體,對於純文字資訊text和content在解析上沒有很大的差別,但是在非純文字請求中python3會自動把請求到的資料以位元組流的形式儲存下來;還有一個res.json()方法一般是用於請求json資料的解析方法。
除了用requests外一般還會用到requests中的session長連線來請求。
In [12]: session = requests.session()
In [13]: session.get('http://www.baidu.com')
Out[13]: <Response [200]>
複製程式碼
session的方法基本和直接使用requests一樣。
還有一些附帶請求頭和使用IP代理的方法
def get_html(url):
proxy = {
'http': '120.25.253.234:812',
'https' '163.125.222.244:8123'
}
heads = {}
heads['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'
req = requests.get(url, headers=heads,proxies=proxy)
html = req.text
return html
複製程式碼