Requests库
安装Requests
pip install requests
Resquests库的7个主要方法
方法 | 说明 |
---|---|
requests.request() | 构造一个请求, 支撑以下各方法的基础方法 |
requests.get() | 获取HTML网页的主要方法 |
requests.head() | 获取HTML网页头信息的方法 |
requests.post() | 向HTML网页提交POST请求的方法 |
requests.put() | 向HTML网页提交PUT请求的方法 |
requests.patch() | 向HTML网页提交局部修改请求 |
requests.delete() | 向HTML页面提交删除请求 |
一. get()方法
r = requests.get(url)
上面代码返回Response对象
1.1 Response对象
Response对象: 包含爬虫返回的内容
Response对象的属性
属性 | 说明 |
---|---|
r.status_code | HTTP请求的返回状态, 200表示链接成功, 404表示失败 |
r.text | HTTP响应内容的字符串形式, 即 url对应的页面内容 |
r.encoding | 从HTTP header中猜测的响应内容编码方式 |
r.apparent_encoding | 从内容中分析出的响应内容编码方式(备选编码方式) |
r.content | HTTP响应内容的二进制形式 |
1.2 Resquest对象
Request库的异常
异常 | 说明 |
---|---|
requests.ConnectionError | 网络连接错误异常, 如DNS查询失败,拒绝连接等 |
requests.HTTPError | HTTP错误异常 |
requests.URLRequired | URL缺失异常 |
request.TooManyRedirects | 超过最大重定向次数, 产生重定向异常 |
requests.ConnectTimeout | 连接远程服务器超时异常 |
requests.Timeout | 请求URL超时, 产生超时异常 |
1.3 爬取网页的通用代码框架
import requests
def getHTMLTest(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status() # 如果状态不是200, 引发HTTPError异常
r.encoding = r.apparent_encoding
return r.text
except:
return "产生异常"
# 只有在这个文件下运行才执行, 当在其他文件导入时是不执行的
if __name__ == '__main__':
url = "http://www.baidu.com"
print(getHTMLTest(url))
二. Request主要方法解析
requests.get(method, url, **kwargs)
**kwargs: 控制访问的参数, 均为可选项
举例:
kv = {'key1 : 'value1', 'key2' : 'values2'}
r = requests.request('GET', 'http://python123.io/ws', params=kv)
print(r.url)
# http://python123.io/ws?key1=value1&key2=value2
#模拟Chrome10来访问网站
hd = {'User-Agent':'Chrome/10'}
r = requests.request('POST', 'http://python123.io/ws', headers=hd)
#向服务器传输文件
fs = {'file' : open('data.xls', 'rb')}
r = requests.request('POST', 'http://python123.io/ws', file=fs)
# 设置超时时间
r = requests.request('GET', 'http://www.baidu.com', timeout=10)
pxs = {'http':'http://user:pass@10.11.11.1:1231',
'https':'https://11.10.10.1:3212'}
r = requests.request('GET', 'http://www.baidu.com', proxies=pxs)
参数 | 作用 |
---|---|
params | 字典或字节序列, 作为参数增加到url中 |
data | 字典,字节序列或文件对象, 作为Request的内容 |
json | JSON格式的数据, 作为Request的内容 |
headers | 字典, HTTP定制头 |
cookies | 字典或CookieJar, Request中的cookie |
auth | 元祖, 支持HTTP认证功能 |
files | 字典类型, 传输文件 |
timeout | 设定的超时时间, 秒为单位 |
proxies | 字典类型, 设定访问代理服务器, 可以增加登录认证 |
allow_redirects:True/False | 默认为True,重定向开关 |
stream:True/False | 默认为True,获取内容立即下载开关 |
verify:True/False | 默认为True,认证SSL证书开关 |
cert | 本地SSL证书路径 |