python爬虫04 | 长江后浪推前浪,Requests库urllib库拍在沙滩上

最近
有些朋友
看完小帅b的文章之后
把小帅b的表情包都偷了
还在我的微信
疯狂发表情包嘚瑟
我就呵呵了

python爬虫04 | 长江后浪推前浪,Requests库urllib库拍在沙滩上

文章插图
 
只能说一句
盘他
还有一些朋友
看完文章不点好看
还来催更
小帅b也只能说一句
继续盘他
python爬虫04 | 长江后浪推前浪,Requests库urllib库拍在沙滩上

文章插图
 
ok
接下来我们要来玩一个新的库
这个库的名称叫做
Requests
这个库比我们上次说的 python爬虫03:那个叫 Urllib 的库让我们的 python 假装是浏览器可是要牛逼一丢丢的
毕竟 Requests 是在 urllib 的基础上搞出来的
通过它我们可以用更少的代码
模拟浏览器操作
人生苦短
接下来就是
学习 Python 的正确姿势
python爬虫04 | 长江后浪推前浪,Requests库urllib库拍在沙滩上

文章插图
 
skr
对于不是 python 的内置库
我们需要安装一下
直接使用 pip 安装
pip install requests
安装完后就可以使用了
接下来就来感受一下 requests 吧
导入 requests 模块
import requests一行代码 Get 请求
r = requests.get('https://api.github.com/events')一行代码 Post 请求
r = requests.post('https://httpbin.org/post', data = https://www.isolves.com/it/yj/zs/2020-06-21/{'key':'value'})其它乱七八糟的 Http 请求
>>> r = requests.put('https://httpbin.org/put', data = https://www.isolves.com/it/yj/zs/2020-06-21/{'key':'value'})>>> r = requests.delete('https://httpbin.org/delete')>>> r = requests.head('https://httpbin.org/get')>>> r = requests.options('https://httpbin.org/get')想要携带请求参数是吧?
>>> payload = {'key1': 'value1', 'key2': 'value2'}>>> r = requests.get('https://httpbin.org/get', params=payload)假装自己是浏览器
>>> url = 'https://api.github.com/some/endpoint'>>> headers = {'user-agent': 'my-App/0.0.1'}>>> r = requests.get(url, headers=headers)获取服务器响应文本内容
>>> import requests>>> r = requests.get('https://api.github.com/events')>>> r.textu'[{"repository":{"open_issues":0,"url":"https://github.com/...>>> r.encoding'utf-8'获取字节响应内容
>>> r.contentb'[{"repository":{"open_issues":0,"url":"https://github.com/...获取响应码
>>> r = requests.get('https://httpbin.org/get')>>> r.status_code200获取响应头
>>> 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 响应内容
>>> import requests>>> r = requests.get('https://api.github.com/events')>>> r.json()[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...获取 socket 流响应内容
>>> 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请求
当你想要一个键里面添加多个值的时候
>>> payload_tuples = [('key1', 'value1'), ('key1', 'value2')]>>> r1 = requests.post('https://httpbin.org/post', data=https://www.isolves.com/it/yj/zs/2020-06-21/payload_tuples)>>> payload_dict = {'key1': ['value1', 'value2']}>>> r2 = requests.post('https://httpbin.org/post', data=payload_dict)>>> print(r1.text){ ... "form": { "key1": [ "value1", "value2" ] }, ...}>>> r1.text == r2.textTrue请求的时候用 json 作为参数
>>> url = 'https://api.github.com/some/endpoint'>>> payload = {'some': 'data'}>>> r = requests.post(url, json=payload)


推荐阅读