requests与urllib.request
- requests很明显,在写法上与urllib.request不同,前者多一个 S.
- 导入包时:
import requests
import urllib.request - urllib.request请求模块,用于打开和读取url
- urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
- response.read()可以获取到网页的内容
- timeout参数的使用在某些网络情况不好或者服务器端异常的情况会出现请求慢的情况,或者请求异常,有时也用来解决反爬,控制爬行速度。
- response.status,response.getheaders()【response.headers】【response.info()】获取状态码以及头部信息。response.read()获得的是响应体的内容.
- urlopen()只能用于简单的请求,它无法添加header信息。
- urllib.request.Request(url) 注意大写。
- 使用data参数;
- data = urllib.parse.urlencode(dict).encode(‘utf-8’)
使用data参数如果要传 必须传bytes(字节流) 类型的,如果是一个字典,先用 urllib.parse.urlencode() 编码。
request = urllib.request.Request(url = url,data = data,headers = headers,method = ‘POST’)
2.req = urllib.request.Request(url=url,data=data,method=‘POST’)
req.add_header(‘User-Agent’,'Mozilla/5.0) 添加头部信息
- rulllib.request.ProxyHandler()设置代理,网站会检测某一段时间某个IP 的访问次数,访问次数过多,会禁止访问,使用代理安全系数也会相应提高。
- urllib.error:包含提出有例外的urllib.request
- urllib.parse:用于解析url
- urllib.robotparser:用于解析robots.txt文件。
requests完全满足网络爬虫的需求,他是在urllib基础上进一步封装,具备urllib的全部功能。
- 安装 pip install requests
- 基于http的post,get请求
- r = requests.get(url, params=d) 参数d表示值为字符串的字典,d不是必须的
- r = requests.post(url,data=data)post请求需 设置请求参数data
- 请求对象response相应内容
- r.status_code:响应状态码
- r.raw:原始响应体,使用r.raw.read()读取
- r.content:字节方式的响应体,需要进行解码
- r.text:字符串形式的响应体,会自动根据响应头部的字符编码进行解码
- r.headers:以字典对象存储服务器响应头,字典见键不区分大小写,若键不存在返回none。
- r.json():Requests中内置的json解码器
- r.raise_for_status():请求失败,抛出异常
- r.url:获取请求链接
- r.cookies:获取请求后的cookie
- r.encoding:获取编码格式