python request库简介_Python爬虫基础系列:初识Requests库

d983927ad3ae91d7599cb4322eb4c5cb.png

点击上方蓝字关注"程序员Bob"呀~

1867c0a155aac1af0dd0fc0afbb35ad7.png

"if something is important enough, even if the odds are against you, you should still do it." 如果一件事情对你很重要,即使成功的概率很小,你也应该去做。

——马斯克

de58075d6ebcc2289963debc6f3666e6.png

Emmm,小编准备开始写第一篇关于Python爬虫的文章了,至于为什么第一篇是Requests库作为第一篇,主要是Python爬虫基本上都是用的Requests库搭配其它的库来进行爬取或者使用主流爬虫框架如Scrapy等进行爬取,使用Python框架爬取会在后面学到。其次是Requests对新手也很友好,虽然之后可能会用到异步携程,但使用Requests+单线程或多线程依旧是新手学习最优先的选择。

其次需要注意的是爬虫并不难学,但对于前端的知识点如HTML以及对于网络的理解要略重于学习Python。简单来说就是要弄清楚爬虫的原理。

NO.1准备Python环境

首先得安装好关于Python的环境。

使用

PyCharm或者Anaconda的spyder

,小编也主要是使用的这两个IDE,任选其一安装即可。安装传送门:

接下来便是

下载Requests库

,打开cmd窗口输入pip install requests.或者使用小编之前说的:

关于Python第三方库安装的那些事

可以先编写一个小小的程序检查以上步骤是否已成功完成:

import requestsr=requests.get("http://www.baidu.com")print(r.status_code)#请求的状态码print(type(r))#r的类型print(r.headers)#返回get请求页面的头部

输出页面如下说明Python环境配置以及库的下载无问题(联网状态下):

6f003390707dfd96c473ed61e563a420.png

To:(状态码)r.status_code:HTTP请求的返回状态,200表示成功,404或其它的表示失败。

2.关于Requests库的学习:

首先介绍Requests库的7个主要使用方法:

requests.request() :构造一个请求,支撑以下各方法的基础方法。

requests.get():获取HTML网页的主要方法,对应于HTTP的Get。

requests.head():获取HTML网页头信息的方法,对应于HTTP的Head。

requests.post():向HTML网页提交Post请求的方法,对应于Http的Post。

requests.put():向HTML网页提交Put请求的方法,对应于HTTP的put。

requests.patch():向HTML网页提交局部修改请求,对应于HTTP的Patch。

requests.delete():向HTML页面提交删除请求,对应于HTTP的delete。

一.Get方法

首先讲述一下关于Requests库的get方法,r=requests.get(url)表示构造一个向服务器请求资源的Request对象;返回一个包含服务器资源的Response对象。

使用形式:

requests.get(url,params=None,**kwargs)

1.url:拟获取页面的url链接。

2.params:url中的额外参数,字典或字节流格式,可选。

3.**kwargs:12个控制访问的参数。

To:

在r=requests.get(url) 中包括Requests库的2个重要对象:一个是指向requests的Response对象,Response 对象包含爬虫返回的内容;还有一个是指向get的Request对象。

说到Response,就不得不说到

Response对象的属性:

r.status_code:HTTP请求的返回状态,200表示连接成功,404表示失败。

r.text:HTTP响应内容的字符形式,即:url对应的页面内容。

r.encoding:从HTTPheader中猜测的响应内容编码方式。

r.apparent_encoding:从内容分析出的响应内容编码方式(备选)。

r.content:HTTP响应内容的二进制形式。

以及

Response对象的编码:

r.emconding:如果header中不存在charset,则认为编码为ISO-8859-1。

r.apparent_encoding :根据网页内容分析出的编码方式。

打个比方,我们在用Requests方法访问某个页面时,首先使用r.status_code看是否为200,如果是,则可以通过r.text或r.encoding等查看相关信息;若是404或其它,则是因为某些原因出错或异常。

在控制台尝试输入下面的语句:

r=requests.get("http://www.baidu.com")r.status_coder.textr.encodingr.apparent_encodingr.encoding = 'utf-8'#备选编码替换r.text

控制台输入如下:

3a7955bbc8d4a07800420dcc339cd490.png

To:在控制台中不用带print语句。

二.head方法

如:r=requests.head('http://bob0912.github.io')

使用r.headers可以获取头部信息。

在控制台尝试输入下面语句:

r=requests.get("http://www.baidu.com")r.status_coder.headers

输出如下:

c790b70104a325d4fc300599709b6a85.png

三.Post方法

post方法:向URL POST一个字典自动编码为form(表单),如下列语句:

payload={'key1':'value1','key2':'value2'}r=requests.post('http://bob0912.github.io',data=payload)print(r.text)

四.Request方法

使用形式:

requests.request(method,url,**kwargs)

1.method:请求方式,对应get/put/post等7种。

2.url:拟获得页面的url的链接。

3.**kwargs:控制访问参数,共13个。

关于method的七种请求方式:

r=requests.request('GET',url,**kwargs)

r=requests.request('HEAD',url,**kwargs)

r=requests.request('POST',url,**kwargs)

r=requests.request('PUT',url,**kwargs)

r=requests.request('PATCH',url,**kwargs)

r=requests.request('delete',url,**kwargs)

r=requests.request('OPTIONS',url,**kwargs)

**kwargs:控制访问参数,均为可选项

params:字典或字节序列,作为参数增加到url中,如:

kv={'key1':'value1','key2':'value2'}r=requests.request('GET','http://python123.io/ws',params=kv)print(r.url)

控制访问的参数有:

data:

字典,字节序列或文件对象,作为Request的内容。

kv={'key1':'value1','key2':'value2'}r=requests.request('POST','http://python123.io/ws',data=kv)

json:

JSON格式的数据,作为Request的内容。

kv={'key1':'value1'}r=requests.request('POST','http://python123.io/ws',json=kv)

headers:

字典,HTTP定制头。

hd={'user-agent':'chrome/10'}r=requests.request('POST','http://bob0912.github.io',headers=hd)

cookies:

字典或CookieJar,Request中的cookie。

auth:

元组,支持HTTP认证功能。

以上两个均为高级功能。

files:

字典类型,传输文件。

fs={'file':open('data.xls','rb')}r=requests.request('POST','http://bob0912.github.io',files=fs)

timeout:

设定超时时间,以秒为单位。

r=requests.request('GET','http://bob0912.github.io',timeout=10)

proxies:

字典类型,设定访问代理服务器,可以增加登录认证。

pxs={'http':'http://user:pass@10.10.10.1:1234''http':'https://10.10.10.1.4321'}r=requests.request('GET','http://www.baidu.com',proxies=pxs)

这样当我们

访问百度时所使用的IP便是服务器的IP地址,可以有效隐藏自己的IP地址。

高级功能(了解即可):

allow_redirects:True/False,默认为True,重定向开关。

stream:True/False,默认为True,获取内容立即下载开关。

verify:True/False,默认为Ture,认证SSL证书开关。

cert:本地SSL证书路径。

Python爬虫系列,未完待续...

85d8db58ad4bf4d8b743c07d79972905.png

106e2719bc2ae1b251d492f415add319.png

为你,千千万万遍.

往期推荐:

一键三连,就差你了

001e99d4207fbc1c4470490e3e27f3b7.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值