社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  python开源

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

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

立志成为爬虫部队之一的同学们,注意啦!如果不知道这货,就枉学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
 
2823 次点击  
文章 [ 2 ]  |  最新文章 3 年前