requests库
python的一个HTTP库(第三方,需要使用pip命令安装),主要用途为发送网络请求,根据服务器的要求不同,可以使用GET、POST、PUT等方式进行请求,并可以对请求头进行伪装,使用代理访问
requesets库中的主要方法
方法 | 描述 |
---|
requests.request() | 构造一个请求,是支持下面的基础方法(下面方法基于该方法封装) | get() | 获取html页面的主要方法 | post() | 向网页提交POST请求 | head() | 获取html网页头信息 | put() | 向网页提交PUT请求 | patch() | 向网页提交局部修改请求 | delete() | 向网页提交删除请求 |
requests.request()方法
requests.request(method,url,**kwargs)
上面get、post、put等方法都是通过request方法得到
**kwargs控制访问参数(均为可选项)
参数 | 描述 | 作用 |
---|
params | 字典或字节序列 | 作为参数增加到url当中 | data | 字典、字节序列、文件对象 | 作为requests的内容(向服务器提交资源时使用) | json | json格式的数据, | 作为requests的内容 | headers | 字典 | 向url访问时发起的HTTP头字段,可定制HTTP协议头(用于伪装请求) | cookies | 字典 | Request中的cookie | files | 字典类型,传输文件 | 向某一个链接提交文件 | timeout | 设置超出时间 | 在规定的timeout时间内没有返回内容,引发异常(可避免等待时间过长) | proxies | 字典格式, | 设置访问代理服务器,可增加登录认证,可用于隐藏真实ip地址,防止爬虫的逆追踪 |
requests库中两个重要对象
response(Response对象)=requests.request(method,url)(Request对象)
response是一个Response对象,它包含服务器返回的所有信息,也包含请求的Request信息
Response对象属性
属性 | 描述 |
---|
status_code | http请求的返回状态,200表示连接成功,404表示失败 | text | http响应的字符串内容即url对应的页面内容(用于查看网页内容) | encoding | 从HTTP的 header中猜测的响应内容编码格式 | apparent_encoding | 从响应内容中分析出的响应内容编码格式(备选编码方式) | content | http相应内容的二进制形式 |
爬虫小测
案例:基于requests的基础爬虫框架
import requests
def get_html(url):
try:
response=requests.get(url,timeout=10)
response.raise_for_status()
response.encoding=response.apparent_encoding
return response.text
except:
return '连接错误'
if __name__=='__main__':
url='https://www.sina.com.cn/'
print(get_html(url))
执行结果
requests的其他功能
设置超时
在请求时设置超时等待时间,可以避免等待太久,在请求时给参数timeout传入一个数字,单位为秒,请求等待时间超过这个值,就会断开并报错
设置请求头
http消息头,指的是客户端请求或服务器响应时传递的头部信息,以明文的字符串格式传送,键值对分隔,内容包含浏览器信息、请求数据类型等, 在使用爬虫爬取网页信息时如果没有得到返回的数据而且没有添加请求头,多半是因为爬虫被发现了,我们通过下面的例子可以看到访问同一个网站,添加请求头和不添加请求头的区别
|