目录
一.urllib.request模块
1.版本
2.常用的方法
3.响应对象
二.urllib.parse模块
常用方法
四.请求方式
五.requests模块
1.安装
2.request常用方法
3.响应对象response的方法
4.处理不信任的SSL证书
什么是SSL证书?
解决方式
六.反反爬处理
1.User-Agent
2.referer
3.cookie
4.session
5.处理方式
一.urllib.request模块
1.版本
python2:urllib2,urllib
python3:把urllib和urllib2合并
2.常用的方法
(1)urllib.request.urlopen("网址") 作用 :向网站发起一个请求并获取响应;
(2)字节流 = response.read(),得到字节流数据;
(3)字符串 = response.read().decode("utf-8");
(4)urllib.request.Request"网址",headers="字典") urlopen()不支持重构User-Agent。
3.响应对象
(1)read() 读取服务器响应的内容;
(2)getcode() 返回HTTP的响应码;
(3)geturl() 返回实际数据的URL(防止重定向问题)。
二.urllib.parse模块
(用于转换中文字符)
常用方法
(1)urlencode(字典)
(2)quote(字符串)
(3)unquote(字符串),quote的逆操作。
四.请求方式
GET特点:查询参数在URL地址中显示;
POST:
(1)在Request方法中添加上 data 参数;urllib.request.Request(url,data=data,headers=headers)
(2)data:表单数据以bytes类型提交,而不是str。
五.requests模块
1.安装
(1)pip install requests
(2)在开发者工具中进行安装
2.request常用方法
(1)request.get(网址)
(2)request.get(网址,data=表单数据)
这里要注意的是,get和post方法中有很多参数,我们要根据实际情况来进行选择性的添加,而以上我添加的是一定要添加的参数。
3.响应对象response的方法
(1)response.text 返回unicode格式的数据(str)
(2)response.content 返回字节流数据(二进制)
(3)response.content.decode('utf-8') 手动进行解码
(4)response.url 返回url
(5)response.encode() = ‘编码’
4.处理不信任的SSL证书
什么是SSL证书?
SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。
解决方式
在请求方法中添加参数 verify=False;即可解决。
import requests
# 目标url
url = 'http://www.chinatax.gov.cn/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.30'
}
# 如果不被响应,就添加参数 verify=False
res = requests.get(url, headers=headers, verify=False)
print(res.content.decode('utf-8'))
六.反反爬处理
(并不是全部,后续会慢慢讲到)
1.User-Agent
作用:记录用户的浏览器、操作系统等,为了让用户更好的获取HTML页面效果。
2.referer
表明当前这个请求是从哪个url过来的。
3.cookie
通过在客户端记录的信息确定用户身份。用与记录用户信息。
HTTP是一种无连接协议,客户端和服务器交互仅仅限于 请求/响应过程,结束后断开,下一次请求时,服务器会认为是一个新的客户端,为了维护他们之间的连接,让服务器知道这是前一个用户发起的请求,必须在一个地方保存客户端信息。
4.session
通过在服务端记录的信息确定用户身份 这里这个session就是一个指的是会话。
5.处理方式
创建一个字典,将需要用到的参数写入到字典中,最后再将字典传入到请求方法的 headers参数中,则可以解决一些反爬问题。