Requests库

发送请求

使用 Requests 发送网络请求非常简单。

一开始要导入 Requests 模块:

>>>importrequests

然后,尝试获取某个网页。本例子中,我们来获取 Github 的公共时间线:

>>>r=requests.get('https://github.com/timeline.json')

现在,我们有一个名为r的Response对象。我们可以从这个对象中获取所有我们想要的信息。

Requests 简便的 API 意味着所有 HTTP 请求类型都是显而易见的。例如,你可以这样发送一个 HTTP POST 请求:

>>>r=requests.post("http://httpbin.org/post")

那么其他 HTTP 请求类型:PUT,DELETE,HEAD 以及 OPTIONS 都是一样的简单:

>>>r=requests.put("http://httpbin.org/put")>>>r=requests.delete("http://httpbin.org/delete")>>>r=requests.head("http://httpbin.org/get")>>>r=requests.options("http://httpbin.org/get")

解析URL中的参数

自定义Headers

对于爬虫来讲,模拟浏览器是发请求的时候做的最多的事情了,最常见的模拟浏览器无非就是伪装headers:

url='http://xlzd.me'In[24]:headers={'User-Agent':'my custom user agent','Cookie':'haha'}In[25]:requests.get(url,headers=headers)

重定向和超时

requests之所以称为“HTTP for human”,因为其封装层次很高,其中一处体现就在:requests会自动处理服务器响应的重定向。

r=requests.get('http://xlzd.me',allow_redirects=False)

有时候对方网站的响应时间太长了,我们希望在指定时间内完事,或者直接停止这个请求,这时候的做法是:

r=requests.get('http://xlzd.me',timeout=3)

timeout表示这次请求最长我最长只等待多少秒

代理

为requests套上一层代理的做法也非常简单:

import requestsproxies = {  "http": "http://192.168.31.1:3128",  "https": "http://10.10.1.10:1080",}requests.get("http://xlzd.me", proxies=proxies)

会话对象

服务器端通过session来区分不同的用户请求(浏览器会话),requests的会话对象是用来模拟这样的操作的,比如可以跨请求保持某些参数:就像你在访问微博的时候,不需要每次翻页都重新登录一次。

session=requests.Session()session.post('http://xlzd.me/login',data={'user':'xlzd','pass':'mypassword'})# 登录成功则可以发布文章了session.put('http://xlzd.me/new',data={'title':'title of article','data':'content'})

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • 总体介绍 由于原生urllib不好用,所以作者写了这个库 库的地址 http://docs.python-requ...
    Luo_Luo阅读 4,874评论 0 0
  • 最近在喜马拉雅找不到喜欢的音频了,偶然的机会下载了“得到”APP,感觉有点意思。 界面设计很简洁,信息传递很明确。...
    lkl_ue阅读 3,372评论 0 0
  • 我在2016年11月10号清晨接到一通电话。 :李先生,您好!您有一份梦想储存在我们这里,现在即将过期,请问是否需...
    放牛姑娘阅读 1,189评论 2 1
  • 年轻就是做梦,年轻就是放肆,年轻就是努力成为自己梦中的“完美女孩” 我是一个90后,一个不折不...
    宿筱妍阅读 4,212评论 11 10