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证书路径

浙公网安备 33010602011771号