菜鸡学习笔记 — request库基本使用
本学习笔记总结自慕课北京理工大学嵩天老师的课程,感谢老师提供的优质课程
课程链接
https://www.icourse163.org/course/BIT-1001870001
request库基于urllib,是Python中一个重要的http库。
一、requests库的主要方法
(1) get()方法:
对应HTTP中的GET
基本语法 :
r = requests.get(url,paramas,kwargs)
#url为访问页面的url链接,为必选
#params是url的额外参数,可以为字典或字节流格式,可缺省
#kwargs是访问控制参数,有12个
get方法构建一个向服务器请求资源的Request对象
requests.get返回的内容是一个包含服务器资源的response对象,由变量r表示
(2)head()方法
对应HTTP中的HEAD,用于获取网页的头部信息
(3)post()方法
对应HTTP中的POST,向网页提交post请求,向url位置资源添加新的数据
(4)put()方法
对应HTTP中的PUT,向网页提交put请求,覆盖url位置全部数据
(5)patch()方法
对应HTTP中的PATCH,向网页提交局部修改请求,修改该url位置资源的部分内容
(6)delete()方法
对应HTTP中的DELETE,向网页提交删除请求
(7)request()方法
是requests库中最基本的方法,其他六种方法均为在此方法基础上封装而成
调用方式
requests.request(method,url,kwargs)
method 指请求方式,可以使用GET,POST等作为参数
url 是网页链接
kwargs 为访问控制参数,共有13个参数可选
分别为:
params:将字典或字节作为参数添加至url中
data:将字典、字节或文件对象作为Request的内容向服务器提交
json:将json数据成员作为Request的内容向服务器提交,提交内容将被存储在服务器的json域上
headers:对应头字段,可以通过该参数定制请求头,可以用来伪装爬虫
例如通过下列代码将爬虫伪装成一个浏览器访问
cookies:从HTTP协议中解析cookies,字典或者CookieJar, Request中的cookie
auth:元组,支持HTTP认证功能
files: 字典类型,可以向服务器提交一个文件
fs = {"file":open('data.xls','rb')}
r = requests.request("POST","http://python123.io/ws",file = fs)
timeout:设置超时时间,以秒为单位,超时将返回一个timeout异常
proxies:字典类型,用于设置代理服务器,可以增加登录认证
pxs = {'http':'http://user:pass@10.10.1:1234'
'https':'https://10.10.1:4321'}
r = requests.request('GET','http://www.baidu.com/',proxies = pxs)
allow_redirects: bool型 默认为True 重定向开关
stream :True/Flase 默认为Ture 获取内容立即下载开关
verify:字段 也是bool型 默认为True 认证ssl证书开关
二、response对象常用属性
status_code:
HTTP请求的返回状态,200表示成功,其他表示失败
text:
HTTP响应内容,字符串格式返回,获取原始数据的常用方式
encoding:
根据HTTP返回头中charset字段判断的页面编码格式,若charset字段不存在,则默认编码为ISO-8859-1
apparent_encoding:
根据返回页面内容判断页面编码格式
content:
返回响应内容的二进制形式,是获取图片或者视频的常用方式
以百度页面为例子分别验证
首先建立response对象,获取服务器页面资源,并使用status_code方法检测连接是否成功,
使用text查看发现有很多乱码
调整一下使用的编码格式,内容成功解析
使用content,内容被以十六进制的方式显示
三、爬取网页的通用代码框架
import requests
def getHtmlText(url):
try:
r = requests.get(url,timeout = 30)
r.raise_for_status()#如果状态不是200,引发HTTPerror异常
r.encoding = r.apparent_encoding
return t.text
except:
return "产生异常"
if __name__=="__main__":
url = "http://www.baidu.com"
print(getHtmlText(url))
Comments NOTHING