首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python爬虫学习(八)Requests库探探

第一次看到这条警告的时候,我简直醉了!

赞叹之余,果断介绍一波!

安装

打开终端,输入 即可。

发送请求

要发送请求,自然就要先导入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/

接下来,用起来吧!

以上。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180302G0C41V00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券