Python爬虫之Requests库入门

Posted xuchengnotes

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python爬虫之Requests库入门相关的知识,希望对你有一定的参考价值。

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

Requests库的get()方法

  • r=requests.get(url)

    r:返回一个包含服务器资源的Response对象

    get:构造一个向服务器请求资源的Request对象

import requests # 导入 requests库
r = requests.get("https://www.baidu.com")   # 使用get请求进行进行访问,得到response响应r
print(r.text)   # 打印response响应的文本内容

Response对象的属性

Response对象包含服务器返回的所有信息,也包含请求的Request信息

属性 说明
r.status_code HTTP请求的返回状态,200表示连接成功,404表示失败
r.text HTTP响应内容的字符串形式,即url对于的内容
r.encoding 从HTTP header中猜测的响应内容编码方式
r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
r.content HTTP响应内容的二进制形式

理解Requests库的异常

异常 说明
requests.ConnectionError 网络连接错误异常,如DNS查询失败、拒绝连接等
requests.HTTPError HTTP错误异常
requests.URLRequired URL缺失异常
requests.TooManyRedirects 超过最大重定向次数,产生重定向异常
requests.ConnectTimeout 连接远程服务器超时异常
requests.Timeout 请求URL超时,产生超时异常
r.raise_for_status() 如果不是200,产生异常requests.HTTPError

爬取网页的通用代码框架

import requests

def gethtmlText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()    # 如果状态不是200,引发HTTPError异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "产生异常"

HTTP协议

HTTP,Hypertext Transfer Protocol,超文本传输协议

HTTP是一个基于“请求与响应”模式的、无状态的应用层协议

HTTP协议采用URL作为定位网络资源的标识,URL格式如下:

? http://host[:port][path]

host:合法的Internet主机域名或IP地址

port:端口号,缺省端口为80

path:请求资源的路径

协议对资源的操作

方法 说明
GET 请求获取URL位置的资源
HEAD 请求获取URL位置的资源的响应消息报告,即获得该资源的头部信息
POST 请求向URL位置的资源后附加新的数据
PUT 请求向URL位置存储一个资源,覆盖原URL位置的资源
PATCH 请求局部更新URL位置的资源,即改变该处资源的部分内容
DELETE 请求删除URL位置存储的资源

技术图片

理解PATCH和PUT的区别

假设URL位置有一组数据UserInfo,包括UserID、UserName等20个字段
需求:用户修改了UserName,其他不变

  • 采用PATCH,仅向URL提交UserInfo的局部更新请求
  • 采用PUT,必须将所有20个字段一并提交到URL,未提交字段被删除

PATCH的最主要好处:节省网络带宽

HTTP协议与Requests库

HTTP协议方法 Requests库方法 功能一致性
GET requests.get() 一致
HEAD requests.head() 一致
POST requests.post() 一致
PUT requests.put() 一致
PATCH requests.patch() 一致
DELETE requests.delete() 一致

以上是关于Python爬虫之Requests库入门的主要内容,如果未能解决你的问题,请参考以下文章

python爬虫从入门到放弃之 Requests库的基本使用

pytho爬虫之requests的使用

python爬虫开发之urllib模块详细使用方法与实例全解

requests库入门之小爬虫

Python网络爬虫与信息提取—requests库入门

python网络爬虫与信息提取——1.requests库入门