理解request库的异常
requests.ConnectionError 网络连接异常,如DNS查询失败,拒绝连接等
requests.HTTPError: HTTP错误异常
requests.URLRequired: URL缺失异常
requests.TooManyRedirects: 超过最大重定向次数, 产生重定向异常
requests.ConnectTimeout: 远程连接超时异常
requests.Timeout: 请求URL超时, 产生超时异常
r.raise_for_status() 如果返回的状态码不是200, 则会产生requests。HTTPError异常
一、requests.get()使用
#Python 的标准库 urllib 提供了大部分 HTTP 功能,但使用起来较繁琐。
#通常,我们会使用另外一个优秀的第三方库:Requests,它的标语是:Requests: HTTP for Humans。
import requests#创建requests模块
reponse=requests.get("https://www.baidu.com/")#首先调用requests的get方法
<class 'requests.models.Response'>
#print(type(response))列表
reponse.encoding='utf-8'#转换中文
# 返回状态码
print(reponse.status_code)
200
# 打印网页的内容
print(response.text)#不需要解码就可以直接打印信息print(response.cookies)
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>结果如下
**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
二、请求头
import requests
#构建请求头,模拟浏览器访问
header={
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'
}#header
reponse=requests.get('http://www.baidu.com/',headers=header)
print(reponse.content.decode('utf-8'))三、post请求
import requests
#包装要发送的数据
data={
'name':'zhang',
'age':'18'
}
header={
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'
}
#调用post()方法进行post请求
reponse=requests.post('http://httpbin.org/post',data=data,headers=header)#post
print(reponse.text)返回结果如下:传递的name和age的值已经被接收
{
"args": {},
"data": "",
"files": {},
"form": {
"age": "18",
"name": "zhang"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "17",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36"
},
"json": null,
"origin": "180.173.37.153",
"url": "http://httpbin.org/post"
}
四、代理的使用
import requests
proxy={
'http':'122.114.31.177'
}
reponse=requests.get('http://www.baidu.com/',proxies=proxy)
print(reponse.status_code)五、超时设置
from requests.exceptions import Timeout
try:
reponse=requests.get('http://www.baidu.com/',timeout=0.001)
print(reponse.status_code)
except Timeout:
print("访问超时")
#request方法对应的requests库中的方法:
requests.get(url, params=None, **kwargs)
url: 用于获取页面的url链接
params:url中的额外参数, 字典或字节流格式, 可选
**kwargs: 12个控制访问的参数, 见以上
requests.head(url, **kwargs)
url: 拟获取页面的url链接
**kwargs: 13个控制访问的参数, 见以上
requests.post(url, data=None, json=None, **kwargs)
url: 拟更新的url链接
data: 字典,字节序列或文件, Requests的内容
json:JSON格式的数据,Requests的内容
**kwargs: 11个控制访问的参数
requests.put(url, data=None, **kawrgs)
url:拟更新页面的url链接
data: 字典, 字节序列或文件, Requests的内容
**kwargs: 12个控制访问的参数
requests.patch(url, data=None, **kwargs)
url: 拟更新页面的url链接
data: 字典,字节序列或文件, Requests的内容
**kwargs: 12个控制访问的参数
requests.delete(url, **kwargs)
url: 拟访问页面的url链接
**kwargs: 13个控制访问的参数
其中这些方法中,get方法是这六个方法中最常用的方法,应该熟练掌握1.Requests模块介绍
Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协
议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP
测试需求。
Requests是为人类编写的http库
安装: conda install requests 或者 pip install requests
2.Requests模块常见API使用
使用dir+help探索Requests模块
使用Requests发送http get请求
使用Requests模块实现http post请求
3.设置请求头信息模拟浏览器访问
4使用代理IP
4、Python爬虫简介
网络爬虫:从互联网网页中获取信息数据的程序、过程
爬取 Crawling:下载包含感兴趣数据的网页过程,可以使用urllib、urllib2或者
Requests
抓取 Scraping:从爬取到的网页中提取出一些感兴趣的数据,并保存下来供后
续使用的过程