response对象的属性
属性 | 说明 |
---|---|
r.status_code | HTTP请求的返回状态,200表示连接成功,404表示失败 |
r.text | HTTP响应内容的字符串形式,即url对于的页面内容 |
r.encoding | 从HTTP header中猜测的响应内容编码方式 |
r.apparent_encoding | 从内容中分析出2的响应内容编码方式(备选编码方式) |
r.content | HTTP响应内容的二进制形式 |
注意:
r.encoding:如果header中不存在charset,则认为编码为ISO-8859-1
r.apparent_encoding:根据网页内容分析出的编码方式
import requests
r=requests.get("http://www.baidu.com")
print(r.status_code)
print(type(r))
print(r.encoding)
print(r.text)
print(r.apparent_encoding)
r.encoding='utf-8'
print(r.text)
理解requests库的异常
异常 | 说明 |
---|---|
requests.ConnectionError | 网络连接错误异常,如DNS查询失败、拒绝连接等 |
requests.HTTPError | HTTP错误异常 |
requests.URLRequired | URL缺失异常 |
requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 |
requests.ConnectTimeout | 连接远程服务器超时异常 |
requests.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.encoding=r.apparent_encoding
return r.text
except:
return "产生异常"
if __name__=="__main__":
url="http://www.baidu.com"
print(getHtmltext(url))
HTTP协议
HTTP(Hypertext Transfer Protocol),超文本传输协议。是一个基于“请求与响应”模式的、无状态的应用层协议,采用URL作为定位网络资源的标识
URL格式:http://host[:port][path]
host:合法的Internet主机域名或IP地址
port:端口号,缺省端口为80
path:请求资源的路径
HTTP URL 的理解:URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源
HTTP协议对资源的操作
方法 | 说明 |
---|---|
GET | 请求获取URL位置的资源 |
HEAD | 请求获取URL位置资源的响应消息报告,即获取该资源的头部信息 |
POST | 请求向URL位置的资源后附加新数据 |
PUT | 请求向URL位置存储一个资源,覆盖源URL位置的资源 |
PATCH | 请求局部更新URL位置的资源,即改变该处资源的部分内容 |
DELETE | 请求删除URL位置存储的资源 |
requests库的七个主要方法
方法 | 说明 |
---|---|
requests.request() | 构造一个请求,支撑以下各方法的基础方法 |
requests.get() | 获取HTML网页的主要方法,对应于HTTP的GET |
requests.head() | 获取HTTP 网页头信息的方法,对应于HTTP的HEAD |
requests.post() | 向HTML网页提交POST请求的方法,对应于HTTP的POST |
requests.put() | 向HTML网页提交PUT请求的方法,对应于HTTP的PUT |
requests.patch() | 向HTM网页提交局部修改的请求 ,对应于HTTP的PATCH |
requests.delete() | 向HTML网页提交删除请求,对应于HTTP的DELETE |
requests.request(method,url,**kwargs)
method(请求方式):GET\HEAD\POST\PUT\PATCH\delete\OPTIONS
**kwargs:控制访问的参数,均为可选项
- params:字典或字节序列,作为参数增加到url中
- json:JSON格式的数据,作为Requests的内容
- headers:字典,HTTP定制头
- cookies:字典或CookieJar,Requests中的cookie
- auth:元组,支持HTTP认证功能
- files:字典类型,传输文件
- timeout:设定超时时间,秒为单位
- proxies:字典类型,设定访问代理服务器,可以增加登录认证(隐藏用户爬取网页的IP)
- allow_redirects:True/False,默认为True,重定向开关
- stream:True/False,默认为True,获取内容立即下载开关
- verify:True/False,默认为True,认证SSL证书开关
- cert:本地SSL证书路径
网络爬虫的尺寸
网络爬虫的限制
- 来源审查:判断User—Agent进行限制(检查来访HTTP协议头的User—Agent域,只响应浏览器或友好爬虫的访问)
- 发布公告:Robots协议(告知所有爬虫网站的爬取策略,要求爬虫遵守)
Robots协议
Robots Exclusion Standard网络爬虫排除标准
- 作用:网站告知网络爬虫哪些页面可以抓取,哪些不行
- 形式:在网站根目录下的robot.txt文件
- 基本语法