立志成为爬虫部队之一的同学们,注意啦!如果不知道这货,就枉学python了。。。
它就是requests。基本上可以这么说吧,凡是使用python并且要进行http请求的,80%都在用它,在爬虫界尤其使用得比较多。
https://github.com/kennethreitz/requests
它的功能有:
- International Domains and URLs 覆盖所有的URL请求
- Keep-Alive & Connection Pooling http的keep alive特性以及连接池功能
- Sessions with Cookie Persistence 会话支持以及 cookie持久化支持
- Browser-style SSL Verification 浏览器式的 SSL 认证
- Basic/Digest Authentication 基本/摘要式的身份认证
- Elegant Key/Value Cookies 优雅的 key/value Cookie
- Automatic Decompression 自动解压
- Automatic Content Decoding 自动内容解码
- Unicode Response Bodies Unicode 响应体
- Multipart File Uploads 文件分块上传
- HTTP(S) Proxy Support 代理控制
- Connection Timeouts 连接超时
- Streaming Downloads 流下载
- .netrc Support 支持 .netrc
- Chunked Requests 分块请求
- Thread-safety 线程安全
它的开发哲学是
Requests 是以 PEP 20 的箴言为中心开发的
- Beautiful is better than ugly.(美丽优于丑陋)
- Explicit is better than implicit.(直白优于含蓄)
- Simple is better than complex.(简单优于复杂)
- Complex is better than complicated.(复杂优于繁琐)
- Readability counts.(可读性很重要)
因此也让它成为最简单可依赖的http抓取利器。。
一个简单的demo是
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}
看到没有,几行就解决了其它模块动辄几十行的代码。。。这就是效率所在。。