requests的使用
HTTP协议
URL格式: http://host[:port][path]
host:合法的Internet主机域名或IP地址
port:端口号,缺省值为80
requests.request(method,url,**kw)
*merhod:请求方式
GET
HEAD
POST
PUT
PATCH
delete
OPTIONS
put 和patch区别:
- 采用patch ,局部更新
- 采用 put,覆盖,未提交字段被删除
**kw:控制访问的参数,均为可选项
1.params:字典或字节序列,作为参数增加到URL中
kv={"key1":"v1","key2":"v2"}
r=requests.request("GET",url,params=kv))
print(r.url)
http://www.baidu.com/?key2=v2&key1=v1
2.data 字典或字节序列或文件对象,作为Request 的内容
kv={"key1":"v1","key2":"v2"}
r=requests.request("POST",url,data=kv)
body="主题内容"
r=requests.request("POST",url,data=body)
3.json:JSON格式数据,作为request内容
kv={"key1":"v1","key2":"v2"}
r=requests.request("POST",url,json=kv)
4.headers:字典,HTTP定制头
hd={'user-agent':'Chrome/10'}
r=requests.request('POST',url.headers=hd)
5.cookies:字典或CookieJar,Request中的cookie
6.auth:元组,支持HTTP认证功能
7.files:字典类型,传输文件
fs={'file':open('data.xls',rb)}
r=requests.request('POST',url,files=fs)
8.timeout:设定超时时间,秒
r=requests.request('GET',url,timeout=10)
9.proxies:字典类型,设定访问代理服务器,可增加登录认证
pxs={'http':"http://user:pass@10.10.10.1:1234"
'https':"https://10.10.10.1:4321"}
r=requests.req
10.allow_redirects: True/False, 默认为T入额,重定向开关
11.stream:默认为True,获取内容立即下载开关
12.verify:默认为True,认证SSL证书开关
13.cert:本地SSL证书路径
requests的方法
requests.get(url,params=None,**kw) 上述12个参数
requests.head(url,**kw) 13个控制访问参数
requests.post(url,data=None,json=None,**kw)
requests.put(url,data=None,**kw)
requests.patch(url,data=None,**kw)
requests.delete(url,**kw)
requests的异常处理
异常 | 说明 |
---|---|
ConnectionErro | 网络连接错误异常,如但是查询失败,拒绝连接 |
HTTPError | HTTP错误异常 |
URLRequired | URK缺失异常 |
TooManyRedirects | 超过最大重定向次数产生重定向异常 |
ConnectTimeout | 连接远程服务器超时异常 |
Timeout | 请求URL超时,产生超时异常 |
异常 | 说明 |
---|---|
r.raise_for_status | 如果不是200,产生异常 requests.HTTPError |
爬取网页通用代码框架
import requests
def getHTMLText(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status()
r.enciding=r.apparent_encoding
return r.text
except:
return "产生异常"
if __name__=="__main__":
url="http://www.baidu.com"
print(getHTMLText(url))
部分来自北京理工大学-嵩天的爬虫课程