第一次看到这条警告的时候,我简直醉了!
赞叹之余,果断介绍一波!
安装
打开终端,输入 即可。
发送请求
要发送请求,自然就要先导入Requests模块啦, 然后就是获取某个网页,比如爱测试使用的百度,
得到了一个Response对象,状态码是200,意味着我们成功获取到了网页内容。
自然,还有许多其他的HTTP请求类型,比如:
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")简单吧!
响应内容
Response对象里面有啥呢?——很多东西!
比如,网页编码:
网页内容:
什么鬼?怎么连个百度的中文字都没有?唉,又得解码!不用!把 属性改一下就好!
状态码、Cookies:
如果发送了一个错误请求(一个 4XX 客户端错误,或者 5XX 服务器错误响应),我们可以通过Response.raiseforstatus()来抛出异常。
定制请求头
还记得使用urllib时我们定制请求头吗?
注意: 定制 header 的优先级低于某些特定的信息源,例如:
如果在 .netrc 中设置了用户认证信息,使用 headers= 设置的授权就不会生效。而如果设置了 auth= 参数, 的设置就无效了。如果被重定向到别的主机,授权 header 就会被删除。代理授权 header 会被 URL 中提供的代理身份覆盖掉。在我们能判断内容长度的情况下,header 的 Content-Length 会被改写。
更进一步讲,Requests 不会基于定制 header 的具体情况改变自己的行为。只不过在最后的请求中,所有的 header 信息都会被传递进去。注意: 所有的 header 值必须是 string、bytestring 或者 unicode。尽管传递 unicode header 也是允许的,但不建议这样做。
传递 URL 参数
比如,我们想传递:
它会自动加到URL后面。
获取二进制数据
现在我们可以轻松获取到一个网页,但如果是图片、视频怎么办呢?它们可都是典型的二进制数据呢!
依旧无压力,赶紧演示一下。比如,要抓取这张图:
如何获得呢?
小菜一碟!自然,我们可以将其保存到本地:
相信大家已经对Requests有了初步的体会,接下来就再体会一下!
代理设置
对于频繁爬取的网站,网站可能会把我我们的IP给禁掉,这时,代理设置是有必要的。
如果需要设置代理,可以通过为请求方法提供 参数来配置:
超时处理
我们可以设置请求时间,一旦超过时间就抛出异常:
带参数的请求
URL 参数 对于一些类似这样的请求:
格式如下:
表单参数提交
Content-Type:application/x-www-form-urlencode格式如下:
json参数提交
Content-Type:application/json格式如下:
至于身份认证,自定义Request等等,附上文档地址:http://docs.python-requests.org/zh_CN/latest/
接下来,用起来吧!
以上。
领取专属 10元无门槛券
私享最新 技术干货