最近
有些朋友 看完小帥b的文章之后 把小帥b的表情包都偷了 還在我的微信 瘋狂發(fā)表情包嘚瑟 我就呵呵了 只能說(shuō)一句 盤他 還有一些朋友 看完文章不點(diǎn)好看 還來(lái)催更 小帥b也只能說(shuō)一句 繼續(xù)盤他
ok 接下來(lái)我們要來(lái)玩一個(gè)新的庫(kù) 這個(gè)庫(kù)的名稱叫做 Requests 這個(gè)庫(kù)比我們上次說(shuō)的 urllib 可是要牛逼一丟丟的 畢竟 Requests 是在 urllib 的基礎(chǔ)上搞出來(lái)的 通過(guò)它我們可以用更少的代碼 模擬瀏覽器操作 人生苦短 接下來(lái)就是 學(xué)習(xí) python 的正確姿勢(shì) skr 對(duì)于不是 python 的內(nèi)置庫(kù) 我們需要安裝一下 直接使用 pip 安裝 pip install requests 安裝完后就可以使用了 接下來(lái)就來(lái)感受一下 requests 吧 導(dǎo)入 requests 模塊
import requests一行代碼 Get 請(qǐng)求 r = requests.get('https://api.github.com/events')一行代碼 Post 請(qǐng)求 r = requests.post('https:///post', data = {'key':'value'})其它亂七八糟的 Http 請(qǐng)求 >>> r = requests.put('https:///put', data = {'key':'value'})
>>> r = requests.delete('https:///delete')
>>> r = requests.head('https:///get')
>>> r = requests.options('https:///get')想要攜帶請(qǐng)求參數(shù)是吧? >>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https:///get', params=payload)假裝自己是瀏覽器 >>> url = 'https://api.github.com/some/endpoint'
>>> headers = {'user-agent': 'my-app/0.0.1'}
>>> r = requests.get(url, headers=headers)獲取服務(wù)器響應(yīng)文本內(nèi)容 >>> import requests
>>> r = requests.get('https://api.github.com/events')
>>> r.text
u'[{"repository":{"open_issues":0,"url":"https://github.com/... >>> r.encoding
'utf-8'
獲取字節(jié)響應(yīng)內(nèi)容 >>> r.content
b'[{"repository":{"open_issues":0,"url":"https://github.com/...獲取響應(yīng)碼 >>> r = requests.get('https:///get')
>>> r.status_code
200獲取響應(yīng)頭 >>> r.headers
{ 'content-encoding': 'gzip', 'transfer-encoding': 'chunked', 'connection': 'close', 'server': 'nginx/1.0.4', 'x-runtime': '148ms', 'etag': '"e1ca502697e5c9317743dc078f67693f"', 'content-type': 'application/json' }獲取 Json 響應(yīng)內(nèi)容 >>> import requests
>>> r = requests.get('https://api.github.com/events')
>>> r.json()
[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...獲取 socket 流響應(yīng)內(nèi)容 >>> r = requests.get('https://api.github.com/events', stream=True)
>>> r.raw
<urllib3.response.HTTPResponse object at 0x101194810>
>>> r.raw.read(10)
'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'Post請(qǐng)求 當(dāng)你想要一個(gè)鍵里面添加多個(gè)值的時(shí)候 >>> payload_tuples = [('key1', 'value1'), ('key1', 'value2')]
>>> r1 = requests.post('https:///post', data=payload_tuples)
>>> payload_dict = {'key1': ['value1', 'value2']}
>>> r2 = requests.post('https:///post', data=payload_dict)
>>> print(r1.text)
{ ... "form": { "key1": [ "value1", "value2" ] }, ...}
>>> r1.text == r2.text
True請(qǐng)求的時(shí)候用 json 作為參數(shù) >>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}
>>> r = requests.post(url, json=payload)想上傳文件? >>> url = 'https:///post'
>>> files = {'file': open('report.xls', 'rb')}
>>> r = requests.post(url, files=files)
>>> r.text
{ ... "files": { "file": "<censored...binary...data>" }, ...}獲取 cookie 信息 >>> url = 'http:///some/cookie/setting/url'
>>> r = requests.get(url)
>>> r.cookies['example_cookie_name']
'example_cookie_value'發(fā)送 cookie 信息 >>> url = 'https:///cookies'
>>> cookies = dict(cookies_are='working')
>>> r = requests.get(url, cookies=cookies)
>>> r.text
'{"cookies": {"cookies_are": "working"}}'設(shè)置超時(shí) >>> requests.get('https://github.com/', timeout=0.001)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>requests.exceptions.Timeout: HTTPConnectionPool(host='github.com', port=80): Request timed out. (timeout=0.001)除了牛逼 還能說(shuō)什么呢?? 掃一掃 學(xué)習(xí) Python 沒(méi)煩惱 近期文章 python爬蟲(chóng)入門01:教你在Chrome瀏覽器輕松抓包
python爬蟲(chóng)入門02:教你通過(guò)Fiddler進(jìn)行手機(jī)抓包
python爬蟲(chóng)03:那個(gè)Urllib的庫(kù)讓我們假裝是瀏覽器
點(diǎn)好看的人 會(huì)有好運(yùn)發(fā)生
|