Requests高级请求库
get方法
import requests
r = requests.get("http://www.baidu.com")
#通过request.get构造一个Request对象,返回值为一个Response对象并赋值给r
Response对象中包含了爬虫返回的内容
Response对象的属性
属性 | 说明 |
---|---|
r.status _code | HTTP返回码,200为正常,304请求成功但被拒绝(没有权限,请求方式不对,可以携带参数解决),400请求失败,一般为参数问题,404服务器找不到页面位置 |
r.text | HTTP响应内容的字符串形式(默认unicode编码),即url对应的页面内容 |
r.encoding | 从HTTP header中猜测的响应内容编码方式(如果header中不存在charset,则认为编码为ISO-8859-1) |
r.apparent_encoding | 从内容中分析出响应内容的编码方式 |
r.content | 响应内容的二进制编码形式 (可以还原图片) |
r.cookies | 返回响应的cookies,部分服务器会对cookie进行监测,下次发送请求的时候,如果没有带上服务器响应的cookie,会被ban |
练习
import requests
r = requests.get("http://www.baidu.com")
print(r.status_code)
print(r.text)
返回内容中无中文部分
print(r.encoding)
输出encoding属性为ISO-8859-1
猜测输出text属性时使用的时encoding属性,因此将utf-8赋值给r.encoding
r.encoding='utf-8'
也可以使用如下方法
r.content.decode("utf-8")
通用代码框架
Requests支持六种常用的异常处理
异常 | 说明 |
---|---|
requests.ConnectionError | 网络连接错误异常,如DNS查询失败,拒绝连接等 |
requests.HTTPError | HTTP错误异常 |
requests.URLRequired | URL缺失异常 |
requests.TooManyRedirects | 超过最大重定向次数 |
requests.ConnectTimeout | 连接远程服务器超时 |
requests.Timeout | 请求URL超时(整个过程的超时) |
print(r.raise_for_status())
#r.raise_for_status()如果不是200则产生异常requests.HTTPError
加入raise_for_status()方法即可得框架
def getHTML(url):
try