python学习记录-requests库
requests库
方法 | 说明 |
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()
构造一个向服务器请求资源的Request对象,返回一个包含服务器资源的Response对象。
如果出现418错误,则说明该网站有反爬机制,可以添加headers参数重新请求。
import requests import re #爬取豆瓣影评前100的电影名称 def douban_top100(): top100 = [] a = [] headers = { "User-Agent": "***** "} for i in range(4): url = 'https://movie.douban.com/top250?start=%i&filter=' % (i * 25) res = requests.get(url, headers=headers) code = res.status_code if code != 200: print("网络错误,", code) else: con = res.content # 网站设置防爬取,应添加headers信息。 con = con.decode("utf-8") title = re.compile(r"img width=\"100\" alt=\"(.+?)\"") if title is not a: top100 += title.findall(con) else: print("错误!爬取信息为空。") if len(top100) != 100: print("爬取信息数量错误!") else: for rate, title in enumerate(top100, start=1): print(rate, title) if __name__ == "__main__": douban_top100()
response的对象
属性 | 说明 |
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 | UR缺失异常 |
requests.TooMangRedirects | 超过最大重定向数,产生重定向异常 |
requests.ConnectTimout | 连接远程服务器异常 |
requests.Timeout | 请求URL超时,产生超时异常 |
r.raise_for_status() | 如果不是200,产生异常request.HTTPRError |
request方法
requests.request(method,url,**kwargs)
**kwargs:控制访问的参数,均为可选项,共13个
(1)params:字典或字节序列,作为参数增加到url中
kv = {"key1": "value1", "key2": "value2"} r = requests.request('GET', "http://www.baidu.com", params=kv) print("r.url")
(2)data:字典、字节序列或文件对象,作为Request的对象
kv = {"key1": "value1", "key2": "value2"} r = requests.request('GET', "http://www.baidu.com", data=kv) body = "主题内容" r = reqests.request('POST', "http://www.baidu.com", data=body)
(3)json:JSON格式的数据,作为Request的内容
kv = {"key1": "value1"} r = requests.request('POST', "http://www.baidu.com", json=kv)
(4)headers:字典,HTTP定制头
hd = {'user-agent':'chrome/10'} r = requests.request('POST', "http://www.baidu.com", headers=hd)
(5)cookies:字典或CookieJar,Request中的cookie
(6)auth:元组,支持HTTP认证功能
(7)files:字典类型,传输文件
fs = {'file':open('data.xls','rb')} r = requests.request('POST', "https://www.baidu.com", files=fs)
(8)timeout:设定超时时间,秒为单位
r = requests.request('GET', 'http://www.baidu.com', timeout=10)
(9)proxies:字典类型,设置访问代理服务器,可以增加登录认证
(10)allow_redirects:True/False,默认为Ture,重定向开关
(11)stream:True/False,默认为True,获取内容立即下载开关
(12)verigy:True/False,默认为True,认证SSL证书开关
(13)cert:本地SSL证书路径