1.获取网页内容 --- requests库
《需理解HTTP协议》
>requests库的7个主要方法
方法
|
说明
|
requests.requests()
|
构造一个请求,支撑一下个方法的基础方法
|
requests.get()
|
获取HTML网页的主要方法,对应与HTTP的GRT |
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
|
>理解requests库的异常
异常
|
说明
|
requests.ConnectionError |
网络连接错误异常,如DNS查询失败,拒绝连接等
|
requests.HTTPRrror | HTTP连接错误异常 |
requests.URLRrror
|
URL缺失异常 |
requests.TooManyRedirecrs
|
超过最大重定向次数,产生重定向异常
|
requests.ConnectTimeout
|
连接远程服务器超时异常
|
requests.Timeout
|
请求URL超时,产生超时异常
|
>requests的get()方法
get ()方法的返回值是一个Response对象,Response作为服务器对get()响应的结果,具有自己的属性和方法。
Response对象的主要属性如下:
属性
|
说明
|
status_code
|
HTTP请求的返回状态码,200表示链接成功,404表示失败
|
text
|
HTTP响应内容的字符串形式,即URL对应页面内容
|
encoding
|
HTTP响应的编码方式
|
content
|
HTTP响应内容的二进制形式
|
headers
|
返回一个字典,内容是服务器的响应头
|
url
|
返回请求的URL
|
apparent_encoding
|
从内容中分析出的响应内容编码方式(备选编码方式)
|
encoding和apparent_encoding的区别
encoding:如果header中不存在charset,则认为编码为ISO-8859-1
apparent_encoding根据网页内容分析出的编码方式
apparen_encoding更为准确
>爬取网页的通用代码框架
import requests
def getHTMLText(url):
try:
r = requests.get(url,timeout=30)
r = raise_for_status() #如果状态不是200,引发HTTPError异常
r.encoding = r.apparent_encoding
return r.text
except:
return '产生异常'
url = "http://www.baidu.com"
print(getHTMLText(url))