网站没续费会怎样,大连工业大学艺术与信息工程学院,做sohu最好的推广网站,wordpress 会员 下载目录
Requests库
7个主要方法
Requests库的get()方法
Response对象的属性
爬取网页的通用代码框架 理解requests库的异常
HTTP协议及Requests库方法
HTTP协议
HTTP协议采用URL作为定位网络资源的标识。
HTTP协议对资源的操作
理解PATCH和PUT的区别
HTTP协议与Requse…目录
Requests库
7个主要方法
Requests库的get()方法
Response对象的属性
爬取网页的通用代码框架 理解requests库的异常
HTTP协议及Requests库方法
HTTP协议
HTTP协议采用URL作为定位网络资源的标识。
HTTP协议对资源的操作
理解PATCH和PUT的区别
HTTP协议与Requsets库
Requests库主要方法解析
requests.requst() Requests库 import requests# 获取网页r requests.get(http://www.baidu.com)# 获取网页状态码200表示成功print(r.status_code)
200 type(r)
class requests.models.Response r.headers
{Cache-Control: private, no-cache, no-store, proxy-revalidate, ection: Keep-Alive, Transfer-Encoding: chunked, Server:}
7个主要方法
方法说明requests.requst()构造一个请求最基本的方法是下面方法的支撑requests.get()获取HTML网页对应HTTP中的GET方法requests.post()向HTML网页提交POST信息对应HTTP中的POST方法requests.head()获取HTML网页的头信息对应HTTP中的HEAD方法requests.put()向HTML提交PUT方法对应HTTP中的PUT方法requests.patch()向HTML网页提交局部请求修改的的请求对应HTTP中的PATCH方法requests.delete()向HTML提交删除请求对应HTTP中的DELETE方法 Requests库的get()方法
r requests.get(url)
1、构造一个向服务器请求资源的Request对象 Request
2、返回一个包含服务器资源的Response对象 Response Response对象包含爬虫返回的内容
requests.get(url,paramsNone,**kwargs)
url获取html的网页的url
paramsurl中的额外的参数字典或字节流格式可选
**kwargs12个控制访问的参数
def get(url,paramsNone,**kwargs):Send a GET request.:param url: URL for the new :class:Request object.:param params: (optional) Dictionary or bytes to be sent in the query string for the:param \*\*kwargs: Optional arguments that request takes.:return: class:Request Request object:rtype: requests.Requestkwargs.setdefault(allow_radirects, True)return request(get, url, paramsparams, **kwargs) Response对象的属性
属性说明r.status_codeHTTP请求返回状态码200表示连接成功404表示失败r.textHTTP响应的字符串形式即url对应的页面内容r.encoding从HTTP header中猜测的响应内容的编码方式r.apparent_encoding从内容中分析响应内容的编码方式(备选编码方式)r.contentHTTP响应内容的二进制形式
r.encoding如果header中不存在charset则认为编码为 ISO-8859-1。
r.apparent_encoding根据网页内容分析出的编码方式。 爬取网页的通用代码框架
理解requests库的异常
异常说明requests.ConnectionError网络连接异常如DNS查询失败拒绝连接等requests.HTTPErrorHTTP错误异常requests.URLRequiredURL缺失异常requests.TooManyRedirects超过最大重定向次数产生重定向异常requests.ConnectTimeout连接远程服务器超时异常requests.Timeout请求URL超时产生超时异常
专门与异常打交道
import requests
def getHTMLText(url):try:r requests.get(url, timeout30)r.raise_for_status() # 如果不是200引发HTTPError异常r.encoding r.apparent_encodingreturn r.textexcept:return 产生异常if __name__ __main__:url http://www.daidu.domprint(getHTMLText(url))
爬取网页的通用代码框架最大的作用是能够使用户访问或爬取网页变得更有效更稳定更可靠 HTTP协议及Requests库方法
HTTP协议
HTTPHypertext Transfer Protocol超文本传输协议。
HTTP是一个基于“请求与响应”模式的、无状态的应用层协议。 请求与响应用户发起请求服务器做相关响应。 无状态第一次跟第二次请求之间并没有相关的关联。 应用层协议该协议工作再TCP协议之上。 HTTP协议采用URL作为定位网络资源的标识。
URL格式http://host[:post][path]
host合法的Internet主机域名或IP地址
port端口号缺省端口为80
path请求资源的路径
HTTP URL实例
http://www.bit.edu.cn
http://220.181.111.188/duty
HTTP URL理解
URL是通过HTTP协议存取资源的Internet路径一个URL对应一个数据资源。
HTTP协议对资源的操作
方法说明GET请求获取URL位置的资源HEAD请求获取URL位置资源的响应消息报告即获取该资源的头部消息POST 请求向URL位置的资源后附加新的数据PUT请求向URL位置存储一个资源覆盖原URL位置的资源PATCH请求局部更新URL位置的资源即改变该处资源的部分内容DELETE请求删除URL位置存储的资源 理解PATCH和PUT的区别
假设URL位置有一组数据UserInfo包括UserID、UserName等20个字段。
需求用户修改了UserName其他不变。
采用PATCH仅向URL提交UserName的局部更新请求。采用PUT必须将所有20个字段一并提交到URL未提交字段被删除。
PATCH的最主要好处节省网络带宽
HTTP协议与Requsets库
HTTP协议方法Requsets库方法功能一致性GETrequests.get()一致HEADrequests.post()一致POSTrequests.head()一致PUTrequests.put()一致PATCHrequests.patch()一致DELETErequests.delete()一致
Requsets库的head()方法
r requests.head(http://httpbin.org/get)
r.headers # 展示反馈头部信息的内容
r.text # 展示全部内容但发现内容是空
head()方法可以用很少的网络流量获取网络资源的概要信息。
Requsets库的post()方法
payload {key1: value1, key2: value2}
r requests.post(http://httpbin.org/post, data payload)
print(r.text)
当我们向UPL去POST一个字典或者POAT键值对的时候那么键值对会默认地被存储到表单的字段下。
r requests.post(http://httpbin.org/post, data ABC)
print(r.text)
如果我们不提交键值对就提交一个字符串ABC那么我们就发现ABC被存到了data的相关的字段下。
post方法根据用户提交内容的不同在服务器上会做数据的相关的整理。
put方法也是一样它与post方法类似只不过它能够将原有的数据覆盖掉。
payload {key1: value1, key2: value2}
r requests.put(http://httpbin.org/post, data payload)
print(r.text) Requests库主要方法解析
requests.requst()
requests.requst(method,url,**kwargs) method请求方式对应get/put/post等7种 url拟获取页面的url链接 **kwargs控制访问的参数共13个 method请求方式
r requests.requst(GET,url,**kwargs)
r requests.requst(HEAD,url,**kwargs)
r requests.requst(POST,url,**kwargs)
r requests.requst(PUT,url,**kwargs)
r requests.requst(PATCH,url,**kwargs)
r requests.requst(delete,url,**kwargs)
r requests.requst(OPTIONS,url,**kwargs)OPTIONS事实上是向服务器获取一些服务器跟客户端能够打交道的参数这里面并不与获取资源直接相关因此平时中使用的少。
**kwargs控制访问的参数均为可选项
params字典或字节序列作为参数增加到url中
kv {key1: value1, key2: value2}
r requests.request(http://python123.io/ws, params kv)
print(r.url)# 运行结果 http://python123.io/ws?key1value1key2value2
data字典、字节序列或文件对象作为Request的内容
kv {key1: value1, key2: value2}
r requests.request(POST,http://python123.io/ws, data kv)
body 主体内容
r requests.request(POST,http://python123.io/ws, data body)
jsonJSON格式的数据作为Request的内容
kv {key1: value1, key2: value2}
r requests.request(POST,http://python123.io/ws, json kv)
headers字典HTTP定制头
hd {user-agent: Chrome/10}
r requests.request(POST,http://python123.io/ws, headers hd)
cookies字典或CookieJarRequest中的cookiesauth元组支持HTTP认证功能files字典类型传输文件
fs {file: opendata.xls, rb}
r requests.request(POST,http://python123.io/ws, files fs)
timeout设定超时时间秒为单位
r requests.request(POST,http://python123.io/ws, timeout 10)
proxies字典类型设定访问代理服务器可以增加登录认证
pxs { http:http://user:pass10.10.10.1:1234,https,http://10.10.10.1:4321}
r requests.request(POST,http://python123.io/ws, proxies pxs)
allow_redirectsTrue/False默认为True重定向开关streamTrue/False默认为True获取内容立即下载开关verifyTrue/False默认为True认证SSL证书开关cert本地SSL证书路径
requests.get()
requests.get(url,paramsNone,**kwargs)
url获取页面中的url链接
paramsurl中的额外参数字典或字节流格式可选
**kwargs12个控制访问的参数request中除了params参数之外的
requests.head()
requests.head(url,**kwargs)
url拟获取页面中的url链接
**kwargs13个控制访问的参数与request一样
requests.post()
requests.post(url,data None, json None,**kwargs)
url拟更新页面的url链接
data字典、字节序列或文件Request的内容
jsonJSON格式的数据Request的内容
**kwargs11个控制访问的参数除了data和json其他11个request一样的参数放最后
requests.put()
requests.put(url,data None,**kwargs)
url拟更新页面的url链接
data字典、字节序列或文件Request的内容
**kwargs12个控制访问的参数除了data其他12个request一样的参数放最后
requests.patch()
requests.patch(url,data None,**kwargs)
url拟更新页面的url链接
data字典、字节序列或文件Request的内容
**kwargs12个控制访问的参数除了data其他12个request一样的参数放最后
requests.delete()
requests.delete(url,**kwargs)
url拟删除页面的url链接
**kwargs13个控制访问的参数request一样