requests库入门
requests库入门
安装requests库:
按下win + r,输入cmd, 右键单击, 选择以管理员身份运行
在cmd窗口中输入, "pip install requests"(先要安装python, 如果pip的版本不是最新,则需要先按照命令行中给出的提示进行更新)
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。requests的简单示例:
在python的ide中输入:
import requests #加载requests库 r = requests.get("http://www.baidu.com") #以百度的首页为例 r.encoding = 'utf-8' #更改编码方式为utf-8 r.text #打印该页面上的内容(HTML代码)
则输出了百度首页的HTML源代码'<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=alway.......'
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) #这里的url是“统一资源占位符”(Uniform Resource Locators)的意思
(url的最直白的解释:“Web地址!”
举个例子:http://www.baidu.com/就是一个url,其中包含了三个部分:
获取资源的协议,网站名,从网站的根文件夹到资源的绝对路径)
requests.get(url, params=None, **kwargs)
其中的params: url中的额外参数,字典或字节流格式,可选
**kwargs:12个控制访问的参数
注意到上面的代码生成了两个对象: Request和Response对象(注意是区分大小写的!)
Response对象:
Response对象包含了爬虫返回的内容
Response对象最常用的属性:
r.status_code: HTTP请求的返回状态,200表示连接成功, 其他表示失败
r.text: HTTP响应内容的字符串形式, 即, url对应的页面内容
r.encoding: 从HTTP header中猜测的响应内容编码方式
r.apparent_encoding: 从内容中分析出的响应内容编码方式(备选编码方式)
r.content: HTTP响应内容的二进制形式
网络连接有风险,异常处理很重要
理解Request库的异常
requests.ConnectionError: 网络连接错误异常, 如DNS查询失败, 拒绝连接等
requests.HTTPError: HTTP错误异常
requests.URLRequired: URL缺失异常
requests.TooManyRedirects: URL缺失异常
requests.ConnectTimeout: 连接远程服务器超时异常
requests.Timeout: 请求URL超时,产生超时异常
爬取网页的通用代码框架
1 import requests 2 3 def getHTMLText(url): 4 try: 5 r = requests.get(url, timeout=30) 6 r.raise_for_status() #如果状态不是200,引发HTTPError异常 7 r.encoding = r.apparent_encoding 8 return r.text 9 except: 10 return "产生异常"
HTTP协议及Request库方法
HTTP协议对资源的操作
GET: 请求获取URL位置的资源
HEAD: 请求获取URL位置资源的响应信息报告, 即获得该资源的头部信息
POST: 请求向URL位置的资源后附加新的数据
PUT: 请求向URL位置存储一个新的资源, 覆盖原URL位置的资源
PATCH: 请求局部更新URL位置的资源, 即改变该处资源的部分内容
DELETE: 请求删除URL位置存储的资源
