Py学习  »  python开源

[每日一款python推荐]史上最好用的http抓取器

支付小哥 • 8 年前 • 3086 次点击  

立志成为爬虫部队之一的同学们,注意啦!如果不知道这货,就枉学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, ...}

看到没有,几行就解决了其它模块动辄几十行的代码。。。这就是效率所在。。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/1668
 
3086 次点击  
文章 [ 2 ]  |  最新文章 4 年前