前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬虫基础系列:初识Requests库

Python爬虫基础系列:初识Requests库

作者头像
小Bob来啦
发布2021-02-12 13:58:49
4230
发布2021-02-12 13:58:49
举报
文章被收录于专栏:用户8057608的专栏

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

——马斯克

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

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

NO.1准备Python环境

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

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

Pycharm下载及安装详解(含视频版)

Anaconda下载及安装详解(内含视频讲解)

接下来便是下载Requests库,打开cmd窗口输入pip install requests.或者使用小编之前说的:关于Python第三方库安装的那些事

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

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

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

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对象。

使用形式:

代码语言:javascript
复制
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或其它,则是因为某些原因出错或异常。

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

代码语言:javascript
复制
r=requests.get("http://www.baidu.com")
r.status_code
r.text
r.encoding
r.apparent_encoding
r.encoding = 'utf-8'#备选编码替换
r.text

控制台输入如下:

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

二.head方法

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

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

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

代码语言:javascript
复制
r=requests.get("http://www.baidu.com")
r.status_code
r.headers

输出如下:

三.Post方法

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

代码语言:javascript
复制
payload={'key1':'value1','key2':'value2'}
r=requests.post('http://bob0912.github.io',data=payload)
print(r.text)

四.Request方法

使用形式:

代码语言:javascript
复制
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中,如:

代码语言:javascript
复制
kv={'key1':'value1','key2':'value2'}
r=requests.request('GET','http://python123.io/ws',params=kv)
print(r.url)

控制访问的参数有:

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

代码语言:javascript
复制
kv={'key1':'value1','key2':'value2'}
r=requests.request('POST','http://python123.io/ws',data=kv)

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

代码语言:javascript
复制
kv={'key1':'value1'}
r=requests.request('POST','http://python123.io/ws',json=kv)

headers:字典,HTTP定制头。

代码语言:javascript
复制
hd={'user-agent':'chrome/10'}
r=requests.request('POST','http://bob0912.github.io',headers=hd)

cookies:字典或CookieJar,Request中的cookie。

auth:元组,支持HTTP认证功能。

以上两个均为高级功能。

files:字典类型,传输文件。

代码语言:javascript
复制
fs={'file':open('data.xls','rb')}
r=requests.request('POST','http://bob0912.github.io',files=fs)

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

代码语言:javascript
复制
r=requests.request('GET','http://bob0912.github.io',timeout=10)

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

代码语言:javascript
复制
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爬虫系列,未完待续...

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员Bob 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档